5

错字会发生,有时在 JavaScript 中很难找到它们。以这个为例(想象它在更多代码之间):

// no error. I would like a warning
document.getElementById('out').innerHtml = "foo";

对于未声明的变量,严格模式有助于:

"use strict";
var myHTML = "foo";
myHtml = "bar"; // -> error

但它不适用于上面的示例。是否有可以捕捉这些错误的程序或模式?我尝试了 JSLint 和 JavaScript Lint,但他们没有抓住它。

理想情况下,我希望它仍然有效(没有警告):

// should work (without warning)
function MyClass(arg) {
  this.myField = arg;
}
4

2 回答 2

1

使用像 WebStorm 这样的 IDE 有助于检测此类错误。

为防止意外向对象添加属性,您可以将其冻结: https ://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/freeze

使用 ES6,您可以使用代理来检测这些错误: http ://www.nczonline.net/blog/2014/04/22/creating-defensive-objects-with-es6-proxies/

于 2014-08-04T12:23:49.307 回答
1

嗯,这就是动态类型编程语言的代价。因为可以在运行时添加属性,所以没有真正的解决方案来检测代码中的拼写错误。

但是,您可以向原型添加一个innerHtml函数,在Element内部调用innerHTML以消除某些拼写错误,但我绝对不建议这样做。

正如其他评论已经建议的那样:一个好的 IDE 可以帮助您识别拼写错误。我只使用 WebStorm 和 VisualStudio,它们都能够检测到未声明或未使用的函数。

于 2014-08-04T12:19:18.957 回答