当我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;
}
}
}
});...I收到了大量的警告,其中大部分是我感到恶心的,但这一次让我感到困惑:“匿名函数并不总是返回值”
它为什么这么说?事件处理程序不是匿名函数,对吗?反正它也没有任何价值,是吗?那么,这意味着什么,以及什么会使林特平静下来?
发布于 2015-03-16 16:40:13
JSLint警告您,任何时候函数都有一些分支遇到return,而其他分支在没有遇到return的情况下终止。JSLint认为函数应该总是显式返回值,或者永远不显式返回值。有时显式返回值的函数会给自己带来警告。您的代码只在一种情况下执行return false,否则就不会使用return。
如果您想要安抚JSLint,您可以在函数的底部放置一个return undefined;,以便它总是显式地返回一些内容。
现在,在我看来:
当涉及事件侦听器时,只在有时返回值是100%可以接受的。使用事件侦听器return值的浏览器内部引擎已经被编程为接受返回值或缺少返回值。
因为在事件侦听器中不返回值的做法是完全正常的,这不会损害代码的可读性。在这种情况下,我认为您可以安全地忽略JSLint。
https://stackoverflow.com/questions/29081696
复制相似问题