2009-09-21 85 views
4

我刚刚花了一些时间调试一个问题,因为忘记在新变量标识符前面使用关键字var,所以Javascript在全局范围内自动创建该变量。有没有什么办法来防止这种情况发生,或者改变默认行为,而不使用像JSLint这样的验证器?防止在Javascript中自动创建全局变量

在编写和执行Javascript代码之间运行验证程序似乎是一个糟糕的编译借口,这是我通常会依赖的步骤来捕获这类事情。

我猜测答案是“不”,所以我正在研究JSLint Eclipse插件,因为我发布了这个。

回答

5

ES5 strict mode防止自动创建全局变量,但它可能会在一年之前,有一些认识严格模式的任何运输的浏览器,所以JSLint的可能是你最好的赌注在那之前: -/

2

不是我知道 - JS开发人员历来不愿意为核心语言添加“安全带”,所以他们已经用JSLint等外部工具来实现。您可以考虑通过Rhino version将JSLint添加到您的构建/测试过程中,并在JSLint报告错误时使测试套件失败。

1

答案确实不是 - 但你可以像你说的那样使用Eclipse插件,据我所知,在保存等时运行它,所以它不需要额外的步骤。

IntelliJ IDEA还能够发现未声明的变量。 IntelliJ可以在你键入的时候实时执行,还可以分析你的代码库jslint风格。可能也有其他一些替代方案。

3

检查this方便的小书签由Remy Sharp创建,您可以使用它来检查是否有任何变量滑出到全局名称空间。

0

安装Firebug,并在您的网站上启用它。它会在你每次创建一个没有var的环球时发出抱怨,以及其他一些你可能会或可能不想要的情况。

您也可以使用about:config选项javascript.options.strict来做到这一点,但由于这是全球性的,它也会影响您浏览的所有其他网站。

+0

我已经有Firebug,它没有抱怨。 – 2009-09-21 20:53:32

+0

您必须确保启用它,包括“脚本”选项卡,就像执行脚本调试时一样;它不会自行干预。 – bobince 2009-09-21 23:42:01