forEach循环中的未定义值

Ale*_*lls 0 javascript foreach node.js

我在JavaScript对象中有这个键{}

  resolve: function () {

        var result = this.initialValue;

        console.log('initial value:',result);  // 5

        this.functions.forEach(function (element, index) {

            console.log('index:', index, 'result:',result); //index=0, result=undefined :(
            var result = element.func(result);

        });

    }
Run Code Online (Sandbox Code Playgroud)

结果在循环外定义(值为Number(5)).但是在循环的第一次迭代中,结果变量变为未定义.JS有什么我不知道的吗?

var result = element.func(result);电话是否以某种result奇怪的方式重新定义?不,那不可能,因为该调用是在第一次登录之后发生的result.

在这种情况下,element.func()只是一个表示console.log()的变量

所以element.func(result)应该相当于console.log(result),但它打印出undefined而不是5.

不知道发生了什么.

小智 5

函数范围内有一个重复的变量声明.它在变量被定义之前记录该变量.

尝试摆脱'var'并在重新分配后记录它.

resolve: function () {

        var result = this.initialValue;

        console.log('initial value:',result);  // 5

        this.functions.forEach(function (element, index) {


            result = element.func(result);
            console.log('index:', index, 'result:',result);

        });

    }
Run Code Online (Sandbox Code Playgroud)