谁能解释为什么返回值是NaN的第一个例子?第二个例子很好。

例如:1

function mul(a,...b){
  for (var i=0; i<b.length; i++);
  return b[i] *= a;
}


例如:2

function mul(a,...b){
  for (var i=0; i<b.length; i++)
    b[i] *= a;
  return b;
}
console.log(mul(2,1,1,1));

最佳答案

因为在第一个示例中b[i]undefined

假设您要遍历长度为3的数组。在循环中,索引i涵盖:0、1、2

但是,在循环的最后一次迭代之后,i已再次增加,现在为3。如果b[3]的长度为3,则尝试访问b时,则未定义。并在数学运算中使用undefined会生成NaN

for (var i=0;i<b.length;i++); // i loops from 0 to the length of the array
return b[i]*=a; // i is now outside the bounds of the array

关于javascript - 谁能解释为什么返回值是NaN的第一个例子?第二个例子很好,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42287083/

10-08 22:57