【发布时间】:2020-06-06 02:09:35
【问题描述】:
我有两个应该产生相同结果的函数。我想澄清他们为什么不这样做。我没有理解 for-loop 和 .forEach 之间必须存在的显着差异。
虽然我想:)
//
//DEMO OBJECT WITH TWO ARRAYS
//
var myArray = {
myList1 : [1,2,3,4],
myList2 : [5,6,7,8]
}
//
//FUNCTION ONE: Produces the sum of myArray.myList1 as expected.
//
var firstWay = function(){
var sum = 0;
for(var i = 0; i < myArray.myList2.length; i++){
sum += myArray.myList2[i];
}
return sum
};
var results2 = firstWay();
console.log(results2);
//FUNCTION TWO PRODUCES NaN
//1.) I don't know why it produced NaN.
//2.) I don't understand why this function wouldn't produce the same result as firstWay.
var secondWay = function() {
var sum = 0;
myArray.myList1.forEach(function(cur){
sum += cur.value;
});
return sum;
};
var results1 = secondWay();
console.log(results1);
【问题讨论】:
-
数字没有
.value属性,它们是值。 -
calculateTotal()定义在哪里? -
为避免混淆,请勿将变量命名为
myArray,它是一个数组。在这种情况下,myArray是一个具有两个数组值属性的对象。
标签: javascript for-loop foreach