Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/378.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如果JavaScript';“s窗口”;名称空间;被污染了?_Javascript_Namespaces - Fatal编程技术网

如果JavaScript';“s窗口”;名称空间;被污染了?

如果JavaScript';“s窗口”;名称空间;被污染了?,javascript,namespaces,Javascript,Namespaces,上下文是JavaScript。我刚刚发现了两个很难发现的错误 在一个案例中,有人写道: for (var k in items) { item = items[k] 。。。因此,在item之前缺少var导致window的item()方法被损坏 在另一种情况下,有人写道: parent = this.parentOfRow(row); 。。。而在父项之前缺少的var导致窗口的父项成员混乱 这两个错误在许多步之外都可以看到 现在是否有人可以通过某种“监视工具”得到警告?我认为一个好的第一步行

上下文是JavaScript。我刚刚发现了两个很难发现的错误

在一个案例中,有人写道:

for (var k in items) {
  item = items[k]
。。。因此,在
item
之前缺少
var
导致
window
item()
方法被损坏

在另一种情况下,有人写道:

parent = this.parentOfRow(row);
。。。而在
父项
之前缺少的
var
导致
窗口
父项
成员混乱

这两个错误在许多步之外都可以看到


现在是否有人可以通过某种“监视工具”得到警告?

我认为一个好的第一步行动是
“使用严格的”
,这就是。这将导致缺少的
var
抛出错误:

“严格使用”;
变量项={a:'b',c:'d'};
用于(项目中的变量k){
项目=项目[k]

}
我认为一个好的第一步是
“严格使用”
,这一点很重要。这将导致缺少的
var
抛出错误:

“严格使用”;
变量项={a:'b',c:'d'};
用于(项目中的变量k){
项目=项目[k]
}
AFAIK JShint()将在您暗示隐式全局变量时通过省略var关键字发出警告

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

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

AFAIK JShint()会在您暗示隐式全局变量时通过省略var关键字发出警告

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

   main();

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

除了Rob的建议之外,您还应该研究类似的linting工具

这些将提醒您注意许多常见的陷阱,并帮助您避免在其他方面可能遗漏的问题

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


除了Rob的建议,你还应该研究像这样的起毛工具

这些将提醒您注意许多常见的陷阱,并帮助您避免在其他方面可能遗漏的问题

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


非常好。我刚刚试着打开它,并立即发现另外两个变量没有
var
。非常感谢。你知道有什么意想不到的缺点吗?我只知道在使用“use strict”时会出现预期的缺点,也就是说,以前正常工作的错误代码现在会抛出错误:-):-)是的,我知道了。谢谢,很好。我刚刚试着打开它,并立即发现另外两个变量没有
var
。非常感谢。你知道有什么意想不到的缺点吗?我只知道在使用“use strict”时会出现预期的缺点,也就是说,以前正常工作的错误代码现在会抛出错误:-):-)是的,我知道了。谢谢。谢谢,这看起来是一个在项目中使用的有价值的工具。谢谢,这看起来是一个在项目中使用的有价值的工具。谢谢。这将用于静态代码分析,这将很有帮助。谢谢。这将有助于静态代码分析。