在js解释器中编写一个简单的for循环时,我会自动获取索引号的最后一个值(在本例中为i)。
js> for (var i=0; i<100; ++i) { numbers[i]=i+1; }
100
js> i
100
有人可以解释为什么口译员会那样工作吗?我没有明确要求它打印i的值。
很抱歉这些含糊不清的人,但我真的不知道如何描述发生了什么。
答案 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; }')