如果JavaScript的窗口“命名空间”被污染,如何得到警告?

时间:2017-03-21 15:05:08

标签: javascript namespaces

上下文是JavaScript。我刚刚追踪了两个难以找到的错误。

在一个案例中,写了

for (var k in items) {
  item = items[k]

...所以var之前遗失的item导致window的{​​{1}}方法被破坏。

在另一种情况下,写了

item()

... parent = this.parentOfRow(row); 之前遗失的var导致parent的{​​{1}}成员混乱。

这两个错误在很多步之后都可见。

现在有人通过某种“监视工具”获得警告吗?

3 个答案:

答案 0 :(得分:1)

我认为良好的第一个行动方针是"use strict"enables strict mode。这将导致丢失var个错误:



'use strict';
var items = { a: 'b', c: 'd' };

for (var k in items) {
  item = items[k]
}




答案 1 :(得分:1)

AFAIK JShint(http://jshint.com/)会在您通过不使用var关键字暗示隐式全局变量时发出警告。

    function main() {
        myVariable = 15;
        return myVariable;
    }

   main();

这将抛出一个JS提示错误,通知您myVariable未定义。注意这些错误可以防止污染全局命名空间。

答案 2 :(得分:1)

除了Rob的建议外,你应该查看linting tools ,如ESLint

这些会警告你很多常见的陷阱,并帮助你避免你可能错过的问题。

您案件的相关ESLint规则可能是