虽然我知道闭包和范围。我需要对以下代码进行详细解释。
for (var i = 0; i < 10; i++) {
i // no console.log
}
输出
9
为什么不显示0到9? 在Chrome开发者控制台上运行。
答案 0 :(得分:3)
您的问题有点模糊,但似乎您在问为什么输出会以9
而不是10
结束(即使在您的示例中,您没有提供输出方法)。
您的循环使用<
运算符来比较i
和10
常量,后者转换为“小于10
”。由于您按整数递增,9
将是循环超出< 10
范围之前的最后一个整数,从而突破循环。
如果您希望10
作为最终输出,则可以使用“小于或等于”运算符(<=
)来比较i
和10
。
修改强>
您已修改原始问题,最好在another Stack Overflow answer总结答案:
javascript中的所有语句都有一个值,包括块 在循环结构中执行。一旦执行了循环块,就可以了 返回最终值(如果不进行任何操作,则返回
undefined
)。 隐含地提供返回值“100”的语句是numbers[i] = i+1;
,因为i + 1的最后一次迭代产生100和 赋值操作返回指定的值。
答案 1 :(得分:1)
如果你在控制台中运行它,那是因为控制台显示它运行的程序中最后一个语句的最终结果。
在您的情况下,for
循环的最终值为9
。
虽然我谈论一个for
陈述给出结果似乎很奇怪(因为陈述不给出结果),但他们实际上确实给出了关于执行的结果整个计划。无论执行代码的是什么,都可以获得此结果。
这是一个例子。您可以使用eval()
执行相同操作,这将为您提供最终语句的结果。
var n = eval('for(var i = 0; i < 3; i++) {i}');
console.log(n);
即使唯一的结果可能来自2
循环,它会在控制台中为eval
提供for
&#39}。最后一个循环的最后声明结果。