其實 Closure的定義就是一個方法能夠存取到非同一個scope的方法的變數. Closure在很多語言都有使用到, 而在 JavaScript當中是透過 Scope Chain去達成.
下面這個例子很有趣, 很明顯的表達出 Scope Chain是 Lexical 分析時候決定, 而非 Execution time決定.
var arg = 1;
function funcTest() {
alert(arg);
var arg = 2;
}
funcTest();
function funcTest2() {
alert(arg);
//var arg = 2;
}
funcTest2();
Check out this Pen!
沒有留言:
張貼留言