Sobes.tech
Middle+

What is a closure and what problem can it cause?

sobes.tech AI

Answer from AI

Closure is a function that 'remembers' the environment in which it was created, including access to variables from the outer scope, even after the outer function has finished executing.

A problem that can arise with closures is unexpected state retention and memory leaks. For example, if a closure captures a variable in a loop, all functions may refer to the same value, leading to errors.

Example in JavaScript:

for (var i = 0; i < 3; i++) {
  setTimeout(function() {
    console.log(i); // Will output 3, 3, 3, not 0, 1, 2
  }, 100);
}

Here, all closures refer to the same variable i, which after the loop equals 3. To avoid this, use let or create an additional function:

for (let i = 0; i < 3; i++) {
  setTimeout(function() {
    console.log(i); // 0, 1, 2
  }, 100);
}

Or

for (var i = 0; i < 3; i++) {
  (function(j) {
    setTimeout(function() {
      console.log(j); // 0, 1, 2
    }, 100);
  })(i);
}

Thus, closures are useful but require careful management of context and state.

What is a closure and what problem can it cause… - sobes.tech