Closure

其他語言也有closure

可提供類似其他語言的static function-使用static data, 以及跟module pattern結合提供內部private function的空間

Closure使用到的變數的lifetime只要還有人指到這個closure function時,這些變數就會隨著存活.

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Closures A closure is a function having access to the parent scope, even after the parent function has closed.

上述link有提到跟 closure相關的 lexical scoping:

the code and see that this works. This is an example of lexical scoping: in JavaScript, the scope of a variable is defined by its location within the source code (it is apparent lexically) and nested functions have access to variables declared in their outer scope.

上述link裡的example, 放在online JB Bin上:http://jsbin.com/wurihum/edit?html,js,output 其code:

var add = (function () {
  var counter = 0;
  debugger;  
  return function () {
    counter = counter +1;
    debugger; //用chrome dev tool看, 會看到closure scope
    return counter;  
  };
})();

add();
debugger;
add();
debugger;
add();

Last updated