在 js 解释器中编写简单的 for 循环时,我会自动获取索引号的最后一个值(在本例中为 i)。
js> for (var i=0; i<100; ++i) { numbers[i]=i+1; }
100
js> i
100
有人可以解释一下为什么解释器会这样工作吗?我没有明确要求它打印 i 的值。
抱歉,伙计们,我的表述含糊不清,但我真的不知道如何描述正在发生的事情。
最佳答案
JavaScript 中的所有语句都有一个值,包括在循环结构中执行的 block 。执行循环 block 后,将返回最终值(如果没有发生任何操作,则返回 undefined
)。隐式提供返回值“100”的语句是 numbers[i] = i+1;
,因为 i+1 的最终迭代产生 100,并且赋值操作返回被赋值的值。
console.log(hello = "World"); // outputs 'World'
现在,这并不是说您可以将 for 循环的结果分配给变量,而是解释器“看到”返回值并将其打印到控制台。
我还要补充一点,这是运行 eval
的结果在您的代码上:
eval('numbers = []; for(var i = 0; i < 100; i++){ numbers[i] = i+1; }')
关于Javascript:编写for循环时,为什么会打印最后一个索引号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23446706/