【问题标题】:Why jsHint doesn't detect an error "is undefined"?为什么 jsHint 没有检测到错误“未定义”?
【发布时间】:2011-10-18 07:34:51
【问题描述】:

我尝试在我的项目中使用 jsHint。但对我来说,它显然不起作用。例如:

(function () {
    if (!window.myApp) window.myApp = {};
    var myApp = window.myApp;
    var a = function (key) {
        key = key || "key";
        return myApp.someModule.get(key);
    };

    a();
})();

这个块应该抛出错误,像这样:“TypeError: myApp.someModule is undefined”,但 jsHint 仍然保持沉默。我使用来自 http://jshint.com/ 的 jsHint 的默认设置。有谁能够帮助我?非常感谢。

【问题讨论】:

标签: javascript jshint


【解决方案1】:

相当肯定它只检查“本地”范围内的变量,不会一直检查对象链。事实上,我会说不可能在所有情况下都能够检测到。

考虑:

var o = {};
someAjaxRequest({
    callback: function(response) { 
        o[response.responseText] = 'found!';
    }
});

【讨论】:

  • 这很奇怪,不是吗? :) 但显然这就是原因。谢谢!
  • 不是真的,如果不实际运行代码,几乎不可能完全弄清楚。我会用一个例子更新我的帖子。
  • 我认为,当某些对象的方法未定义时,jsHint 应该检测情况。在您的示例中,如果我添加字符串 var a = o["h"].method(); 它仍然未被检测到。但我可能是错的。
  • 当然可以,但关键是在所有场景中都很难捕捉到它,尤其是动态属性分配和对象属性的工作方式,所以它似乎没有尝试。
猜你喜欢
  • 1970-01-01
  • 2013-09-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-10-19
  • 2011-12-15
  • 1970-01-01
  • 2020-09-28
相关资源
最近更新 更多