那就是闭包:
function xPlusPlus() {
var x = 0;
return function () {
console.log(x++);
}
}
var inner = xPlusPlus();
inner();// 0
inner();// 1
inner();// 2
但是,关闭也是吗?
var x = 0;
function xPlusPlus() {
console.log(x++);
}
xPlusPlus();// 0
xPlusPlus();// 1
xPlusPlus();// 2
我将非常感谢您的回答
假设没有其他包裹代码段xPlusPlus
函数声明的内容位于全局范围内,这意味着它将创建附加到全局范围的闭包。
区别在于
x
在xPlusPlus
范围内x
在全球范围内这是第一种情况下的执行对话:
function xPlusPlus() {
var x = 0;
return function () {
console.log(x++);
}
}
var inner = xPlusPlus();
inner();
Lineconsole.log(x++);
:“嘿,匿名函数,你知道变量x
吗?”
匿名功能:“不,再上一层!”
Lineconsole.log(x++);
:“嘿,xPlusPlus
函数,你知道变量x
吗?”
xPlusPlus
功能:“是的,我为您准备!”
线console.log(x++);
:“很酷!让我增加x
一个
结束
这是第二种情况执行对话:
var x = 0;
function xPlusPlus() {
console.log(x++);
}
xPlusPlus();
Lineconsole.log(x++);
:“嘿,函数xPlusPlus
,你知道变量x
吗?”
功能xPlusPlus
:“不,再上一层楼,您将进入全球范围!”
Lineconsole.log(x++);
:“嘿,global scope
函数,你知道变量x
吗?”
global scope
:“是的,我为您准备!”
线console.log(x++);
:“很酷!让我增加x
一个
结束
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句