本质上,我试图在条件中声明一个变量--javascript中while循环的一部分:
while (var b=a.pop()) {
do_sth(b)
}
然而,我的浏览器(firefox)不接受这一点。相反,我必须这样做:
var b
while (b=a.pop()) {
do_sth(b)
}
这是可行的。这是意料之中的行为吗?
发布于 2009-11-11 05:06:42
是的,是这样的。
如果需要,可以使用for
循环,如下所示:
for (var b; b = a.pop(); ) { //Note the final semicolon
do_sth(b);
}
发布于 2009-11-11 05:08:45
JavaScript没有块作用域。它有函数作用域。因此,为了确保人类和JavaScript以相同的方式阅读代码,您应该手动将您的var声明提升到函数的顶部。
下面是JSLint对你的代码的评价:
Problem at line 1 character 8: Expected an identifier and instead saw 'var'.
使用JSLint,至少在你学习JavaScript的时候。你很快就会学到很多东西。这会伤害你的感情。
发布于 2009-11-11 05:08:00
JavaScript没有块作用域。所以所有的var
声明都在函数作用域中。因此,在JavaScript中声明while
表达式中的变量是没有意义的。
此外,您应该以分号结束语句。这不是绝对必要的,但强烈建议您这样做。
https://stackoverflow.com/questions/1711173
复制相似问题