koj*_*iro 9 javascript scope global-variables
在研究codereview问题时,我注意到了JSLint的一个有趣结果.JSLint抱怨在定义变量之前使用了变量.这是一个产生相同结果的缩短版代码:
(function () {
try {
var a = 0;
throw { name: "fakeError" };
} catch (e) {
a = 1;
}
}());
Run Code Online (Sandbox Code Playgroud)
我对JavaScript的理解说上面的代码应该等同于:
(function () {
var a;
try {
a = 0;
throw { name: "fakeError" };
} catch (e) {
a = 1;
}
}());
Run Code Online (Sandbox Code Playgroud)
实际上,a
当通过Firebug运行时,这两个示例都不会导致存在于全局范围内.我看了一下ECMA-262规范的第12.14节,但是我没有看到任何会让我认为应该区别对待功能的东西.这只是JSLint中的一个错误,还是两个表达式在功能上有所不同?
归档时间: |
|
查看次数: |
730 次 |
最近记录: |