小编spa*_*117的帖子

幕后的函数表达式真正发生了什么?

我正在遍历freecodecamp上的javascript基础,只是为了刷新自己的记忆,当我进入ES6并解释varlet之间的差异时,其中一个示例使我(和我的同事)头疼。

'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)

javascript ecmascript-6

4
推荐指数
1
解决办法
128
查看次数

标签 统计

ecmascript-6 ×1

javascript ×1