B. *_*non 0 jquery jslint anonymous-function eventhandler
当我JSLint这段代码时:
$(document).keydown(function(e){
if ($("#chaptersFunctionality").length !== 0) {
if (e.keyCode == '13')
return false;
if ($("#kelvin").val() === "" && $("#caleb").attr("title") === "Show all steps") {
switch(e.which){
case 39: if ((parseInt(currentAnchor)+1) < parseInt(maxi))
expandMe(++currentAnchor);
break;
case 37: if (currentAnchor > 0)
expandMe(currentAnchor-1);
break;
}
}
}
});
Run Code Online (Sandbox Code Playgroud)
...我得到了很多警告,其中大部分都是我嘲笑的,但这个让我难过:" 匿名函数并不总是返回值 "
为什么这么说呢?事件处理程序不是匿名函数,是吗?并且它无论如何都没有返回任何价值,是吗?那么这意味着什么,以及[moll,pac]如果是什么呢?
每当一个函数有一些分支遇到一个return和其他分支终止而没有遇到一个时,JSLint会发出警告return.JSLint认为函数应始终显式返回值或永远不显式返回值.有时显式返回值的函数会自行获得警告.您的代码return false在一种情况下执行,否则永远不会使用return.
如果你想安抚JSLint,你可以return undefined;在函数的底部放置一个,以便它总是显式返回一些东西.
现在,我认为:
说到事件监听器,有时只返回值是100%可接受的.使用您的事件侦听器return值的浏览器内部引擎已经编程为接受返回值或缺少返回值.
因为在事件监听器中不返回值的做法是完全正常的,所以这不会损害代码的可读性.我认为在这种情况下你可以安全地忽略JSLint.