我不知道为什么,但是我用作函数名的一些单词会被定义但从未使用的lint错误。
例如,下面的代码返回错误:
// I am using AngularJS
$scope.close = close;
function close() {
/* Code here */
}
但这不是:
// I am using AngularJS
$scope.close2 = close2;
function close2() {
/* Code here */
}
错误在function close()
行。为什么这么特别的名字?如何将此错误静音?
答案 0 :(得分:1)
(注:答案已经过大量编辑)
John Papa says to use latedef
in JSHint并且至少是隐含地忽略JSLint问题。 (latedef
已定义here。)
我相信那里有一个很好的解决方案(见下文),但是,它包含了Papa建议的样式的优点,代码在JSHint 和 JSLint中。 / p>
JSHint"错误"不要抱怨close2
。 JSLint完全像你期待的那样抓住它。
close
但close2
不是JSHint问题对于它的价值,如果您将代码(jslint格式化的Pasteee以及close& close2 here)粘贴到JSLint.com,两者 {{ 1}}和close
会导致错误。如果您没有看到close2
的错误,我就会猜到它的JSHint问题,但确切地看到您的问题会更有用#&# 39;通过JSHint(在上下文中)重新定义以确定。
因此close2
不是JSLint的特殊名称。我想看看你的"实际"上下文中的代码,看看JSLint是否会说类似的东西
为了清楚起见,这突破JSLint.com:
close
将生成/*jslint sloppy:true, white:true */
/*global $scope */
$scope.close2 = close2;
function close2() {
return "something";
}
如果你想知道为什么JSHint,我相信,打破,我们可以去JSHint代码探索,但回答你的JS L int标签(至少)你的行为看到没有发生。
请参阅this SO answer,了解您在此处讨论的内容,John Papa says to use latedef
in JSHint。解决掉毛问题的另一种方法是忽略爸爸和define the function first,但正如你在comment, below中提到的那样,这并不理想。
所以,这是我能想到的最好的妥协......
这肯定会使JSHint错误无效,因为导致它的代码不再存在。如果我正在做Angular并且需要遵循Papa风格,那就是我要做的就是保持Crockford的祝福。
示例:
'close2' was used before it was defined. $scope.close2 = close2;