是否可以在使用前强制JavaScript声明变量?

thu*_*ltz 6 javascript

是否有可能(通过在JavaScript代码中使用某些指令)在没有首先声明变量的情况下使用变量时抛出警告或错误?

如果不可能,是否有一些插件可以强制Eclipse(或任何其他IDE)检测未声明的变量?

ham*_*mar 6

是的,可以使用严格模式执行此操作.您可以通过"use strict"在文件或函数顶部放置包含字符串文字的语句来启用它,以便为该范围启用严格模式.

"use strict";
doesNotExist = 42; // this throws a ReferenceError
Run Code Online (Sandbox Code Playgroud)

这是ECMAScript 5中的一项新功能,目前尚未得到所有浏览器的支持.但是,由于这"use strict";是一个无效的有效语句,因此不支持它的浏览器会忽略它.因此,您可以在开发时使用它来捕获错误,但不要依赖它在用户的浏览器中引发异常.

  • 如果所有严格模式都是在使用之前强制声明变量,那么它是否仅在Firefox中起作用并不重要,因为(对于这个特定目的)你可以测试该浏览器 - 可能很快找到你错过声明的地方.但是,严格模式也会做其他事情,所以它不是解决这个问题的非常好的解决方案.更好的解决方案是像www.jslint.com或www.javascriptlint.com这样的验证器 - 虽然由于某种原因,后者考虑检查未声明的变量是一个"高级"功能,我默认需要它. (4认同)