我正在遍历freecodecamp上的javascript基础,只是为了刷新自己的记忆,当我进入ES6并解释var和let之间的差异时,其中一个示例使我(和我的同事)头疼。
'use strict';
let printNumTwo;
for (let i = 0; i < 3; i++) {
if (i === 2) {
printNumTwo = function() {
return i;
};
}
}
console.log(printNumTwo());
// returns 2
console.log(i);
// returns "i is not defined"Run Code Online (Sandbox Code Playgroud)
我期望该printNumTwo函数返回undefined,以为到该函数被调用时该变量i不存在。我的一位同事说,将函数表达式分配给变量时,i得到的值为,2因此当您调用函数时,它将始终返回2。
为了验证该理论,我们将原始示例修改为:
'use strict';
let printNumTwo;
for (let i = 0; i < 3; i++) {
if (i === 2) …Run Code Online (Sandbox Code Playgroud)