这是我无法理解其流程的代码,以及即使在for循环结束后,i的值仍如何保持不变。
RouterModule.forChild(routes),
程序的输出是
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 :(得分:2)
这种行为的原因是闭包
闭包使您可以从内部访问外部函数的作用域 功能。在JavaScript中,闭包是在每次函数被创建时创建的 在函数创建时创建。 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);