Javascript:当编写for循环时,为什么打印最后一个索引号?

Javascript: When writing a for loop, why does it print the last index number?

本文关键字:打印 为什么 最后一个 索引 循环 for Javascript      更新时间:2023-09-26

在js解释器中编写一个简单的for循环时,我自动获取最后一个值即索引号(在本例中为I)。

js> for (var i=0; i<100; ++i) { numbers[i]=i+1; }
100
js> i
100

谁能解释一下为什么解释器是这样工作的?我没有明确要求它输出I的值。

很抱歉我的表述模棱两可,伙计们,但我真的不知道如何描述正在发生的事情。

javascript中的所有语句都有一个值,包括在循环结构中执行的块。一旦循环块被执行,返回最终值(如果没有操作,则返回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; }')