【发布时间】:2012-09-28 18:00:09
【问题描述】:
在下面的 Java sn-p 中,i 的范围仅限于 for 循环内部。这就是为什么它会导致错误。然而,在类似的 JS sn-p 中,i 显然可以在循环之外访问。这怎么可能?
Java:
for(int i=0;i<10;i++) {
...
}
System.out.println(i);
输出:“我没有定义”
JS:
for(var i=0;i<10;i++) {
...
}
console.log(i);
输出:10
我没想到会看到 JS 的输出。我想知道 JS 与 Java 有何不同。 JavaScript 变量作用域是如何工作的?
【问题讨论】:
-
你是不是意思在
for的末尾加上分号? -
我认为他做到了,否则第一个循环的结果将是十次打印,而不是“我未定义”。
-
@LouisWasserman 是的,他打算把分号留在那里。您必须检查的事实是为什么这样做从来没有是好的做法。
-
@LouisWasserman 我已经编辑了这个问题,以避免这种混淆。
标签: java javascript scope