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

时间:2014-05-03 16:01:10

标签: javascript for-loop interpreter

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

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

有人可以解释为什么口译员会那样工作吗?我没有明确要求它打印i的值。

很抱歉这些含糊不清的人,但我真的不知道如何描述发生了什么。

1 个答案:

答案 0 :(得分:3)

javascript中的所有语句都有一个值,包括在循环结构中执行的块。执行循环块后,将返回最终值(如果未执行任何操作,则返回undefined)。隐含地提供返回值的声明&#34; 100&#34;是numbers[i] = i+1;,因为i + 1的最后一次迭代产生100,赋值操作返回指定的值。

console.log(hello = "World"); // outputs 'World'

现在,这并不是说你可以将for循环的结果赋给变量,但解释器&#34;看到&#34;返回值并将其打印到控制台。

我还要补充说,这是在您的代码上运行eval的结果:

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