错别字发生了,有时候很难用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;
}
答案 0 :(得分:1)
嗯,这就是动态类型编程语言的代价。因为可以在运行时添加属性,所以没有真正的解决方案来检测代码中的拼写错误。
然而,您可以向innerHtml
原型添加Element
函数,在内部调用innerHTML
以消除某些拼写错误,但我绝对不会建议这样做。
正如其他评论已经提出的:一个好的IDE可以帮助您识别拼写错误。我只使用WebStorm和VisualStudio,它们都能够检测未声明或未使用的功能。
答案 1 :(得分: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/