这是我无法理解其流程的代码,也无法理解即使在 for 循环结束后 i 的值如何仍然存在。
var printNumTwo;
for (let i = 0; i < 5; i++) {
if (i === 2) {
console.log("now");
printNumTwo = function() {
console.log("inside");
return i;
};
console.log(i);
}
console.log(i);
}
console.log(printNumTwo());
程序的输出是
0
1
now
2
2
3
4
inside
2
最佳答案
reason of this behavior is Closures
A closure gives you access to an outer function’s scope from an inner function. In JavaScript, closures are created every time a function is created, at function creation time. mozilla doc
var printNumTwo;
for (let i = 0; i < 5; i++) {
if (i === 2) {
console.log("now");
printNumTwo = function() {
console.log("inside");
return i;
};
console.log(i);
}
console.log(i);
}
console.log('now calling printNumTwo()')
let s=printNumTwo();
console.log('now printing return value of printNumTwo()')
console.log('retrun value of PrintNumTwo is:'+s);
关于javascript - 无法理解这段 javascript 代码如何控制流程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59302884/