为什么此代码返回 43
结果,我期望结果 42
。代码如下:
function say667() {
// Local variable that ends up within closure
var num = 42;
var say = function() { console.log(num); }
num++;
return say;
}
var sayNumber = say667();
sayNumber();
最佳答案
您已经关闭了变量 num
,而不是定义函数时变量的值。
这是事件的顺序:
- 您将 42 分配给
num
- 您将
num
增加到 43 - 返回一个函数并将其存储在
sayNumber
- 您调用该函数,该函数读取
num
的值,即43
关于javascript - 理解闭包有困难,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51662431/