在阅读了 SO 和这篇好文章之后,我仍然不太了解局部变量的范围。我还阅读了 Ben Alman 的这篇好文章。
function foo(){
var i=0;
console.log(++i);
}
foo(); //1
foo(); //1
//##################
var foo = function(){
var i=0;
console.log(++i);
};
var x = foo;
x(); //1
x(); //1
//##################
function foo2(){
var i = 0;
return function(){
console.log(++i);
};
}
var x = foo2();
x(); //1
x(); //2 -- I don't get this
为什么在第三个例子中,我似乎可以有一个单例函数,即使它调用了几次,也可以使用相同的公共内部变量i=0
?
那是因为您多次调用由主函数返回的内部函数,而主函数(foo2) 仅执行一次。因此没有重置发生,我不断增加。
所以foo2()
被调用一次,内部函数调用两次。
var x = foo2();
当你这样做时,我被初始化0
并返回一个函数。请注意,您不再接触此函数,而将仅使用返回的函数。
x();
执行返回函数的那一行,而这只是执行该行
console.log(++i);
x();
又一样。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句