当我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;
}
}
}
});
......我收到了很多警告,其中大部分都是我的意思,但这个让我难过: “匿名函数并不总是返回值”
为什么会这样说?事件处理程序不是匿名函数,是吗? 并且它无论如何都没有返回任何价值,是吗? 那么这意味着什么,以及[moll,pac]是什么呢?
答案 0 :(得分:5)
return
而其他分支终止而没有遇到return
,JSLint会发出警告。 JSLint认为函数应该始终显式返回值,或者 never 显式返回值。 有时显式返回值的函数会自行获得警告。您的代码在一种情况下执行return false
,否则永远不会使用return
。
如果要安抚JSLint,可以在函数的底部放置一个return undefined;
,以便它始终显式返回。
现在,我认为:
说到事件监听器,有时只返回值是100%可接受的。使用您的事件侦听器return
值的浏览器内部引擎已经编程为接受返回值或缺少返回值。
因为在事件监听器中不返回值的做法是完全正常的,所以这不会损害代码的可读性。我认为在这种情况下你可以安全地忽略JSLint。