Javascript验证/检查:检测未声明方法或对象属性的使用

时间:2014-04-08 10:59:38

标签: javascript jslint jshint

请考虑以下代码。

以下是根据JSLint或JSHint完全有效的Javascript代码:

function fun() {
    "use strict";
    var myvar = "";
    myvar.foo();
}

以下不是:

function fun() {
    "use strict";
    var myvar = "";
    foo();
}

为什么JSLint(或JSHint)没有检测到之前没有声明myvar.foo(),而是检测到foo()没有被声明?有没有我错过的选择?

我希望在验证时检测到这些类型的错误。是否有另一个javascript工具可以检测对象内未声明的属性或方法的使用,如上面的例子中所述?

2 个答案:

答案 0 :(得分:1)

所有短信只是准备好你的代码,他们不运行它。在您的情况下,无法判断是否定义了myvar.foo。至于foo()如果你在同一个文件中定义它,JSHint会检测到它。否则,它不会。

答案 1 :(得分:0)

Linters只是解析/扫描代码中的“问题”。如果您真的想测试代码,则需要使用单元测试。

像Qunit一样:https://qunitjs.com/

  

JSLint接受JavaScript源并对其进行扫描。如果发现问题,   它返回描述问题的消息和近似值   源中的位置。问题不一定是语法   错误,虽然经常是。 JSLint将一些样式约定视为   以及结构问题。它不能证明你的程序是   正确。它只是提供另一组眼睛来帮助发现问题   http://www.jslint.com/lint.html