【发布时间】:2013-12-26 12:52:52
【问题描述】:
这里的基本问题.. 第二个console.log(k); 打印出 10 而不是 9,这是为什么呢?
function test (o) {
var i = 0;
if(typeof o == "object") {
var j = 0;
for(var k=0;k<10;k++){
console.log(k);
}
console.log(k);
}
console.log(j);
}
test(o);
【问题讨论】:
-
10被打印是因为 JavaScript 没有块作用域,并且当k < 10失败时,k是10。 -
@Juhana 对不起,我没有仔细阅读
-
@Blender:
k没有设置为其他值或被遮蔽,我看不出 JavaScript 缺少块范围有何改变。 -
k 在打印 log(k) 之前获取增量,所以使用 while 循环它会为你工作
-
@Qantas94Heavy:您在循环之外引用它。类似的代码在具有块作用域的 C++ 中不起作用。
标签: javascript variables loops scope