我在 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);
});
}
result 在循环外部定义(值为 Number(5))。但在循环的第一次迭代时,结果变量变得未定义。关于JS还有什么我不知道的吗?
var result = element.func(result);
调用是否以某种奇怪的方式重新定义了result
?不,不可能,因为该调用是在第一次记录结果
之后进行的。
在本例中,element.func() 只是一个代表 console.log() 的变量
so element.func(result)
应该等同于 console.log(result)
,但它打印出 undefined 而不是 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);
});
}
关于javascript - forEach 循环中未定义的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30336161/