请考虑以下代码。
以下是根据JSLint或JSHint完全有效的Javascript代码:
function fun() {
"use strict";
var myvar = "";
myvar.foo();
}
以下不是:
function fun() {
"use strict";
var myvar = "";
foo();
}
为什么JSLint(或JSHint)没有检测到之前没有声明myvar.foo(),而是检测到foo()没有被声明?有没有我错过的选择?
我希望在验证时检测到这些类型的错误。是否有另一个javascript工具可以检测对象内未声明的属性或方法的使用,如上面的例子中所述?
答案 0 :(得分:1)
所有短信只是准备好你的代码,他们不运行它。在您的情况下,无法判断是否定义了myvar.foo
。至于foo()
如果你在同一个文件中定义它,JSHint会检测到它。否则,它不会。
答案 1 :(得分:0)
Linters只是解析/扫描代码中的“问题”。如果您真的想测试代码,则需要使用单元测试。
像Qunit一样:https://qunitjs.com/JSLint接受JavaScript源并对其进行扫描。如果发现问题, 它返回描述问题的消息和近似值 源中的位置。问题不一定是语法 错误,虽然经常是。 JSLint将一些样式约定视为 以及结构问题。它不能证明你的程序是 正确。它只是提供另一组眼睛来帮助发现问题 http://www.jslint.com/lint.html