Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript forEach循环中未定义的值_Javascript_Node.js_Foreach - Fatal编程技术网

Javascript forEach循环中未定义的值

Javascript forEach循环中未定义的值,javascript,node.js,foreach,Javascript,Node.js,Foreach,我在JavaScript对象{}中有这个键 resolve: function () { var result = this.initialValue; console.log('initial value:',result); // 5 this.functions.forEach(function (element, index) { console.log('index:', index, 'result

我在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);

        });

    }
结果在循环外部定义(值为数字(5))。但是在循环的第一次迭代中,结果变量变得未定义。关于JS有什么我不知道的吗

var result=element.func(结果)调用以某种奇怪的方式重新定义
结果
?不,这不可能,因为该调用是在第一次记录
结果之后进行的

在本例中,element.func()只是一个表示console.log()的变量

所以
element.func(result)
应该等同于
console.log(result)
,但它打印出的是未定义的,而不是5


不知道发生了什么。

在您的
控制台中。log
result
指的是本地变量
result
,因此它是未定义的(正如您在下一行中定义的那样)。

您正在
forEach
循环中重新分配
result
变量

var result=element.func(结果)


因此,当循环在第一次之后继续时,
result
将是
element.func(result)
而不是
this.initialValue

,我相信由于
forEach(function())
内部的
var result
导致
result
被提升到console.log


从循环中删除
var
将解决此问题。

函数范围内存在重复的变量声明。它在定义变量之前就记录了它

尝试删除“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);

        });

    }
可能重复的