当我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]化棉绒呢?
函数具有某些遇到return
的分支而具有终止而未遇到return
的其他分支时,JSLint 都会向您发出警告。JSLint 认为函数应该始终显式返回值,或者从不显式返回值。有时显式返回值的函数会为自己赢得警告。您的代码在一种情况下会return false
,否则从不使用return
。
如果要安抚 JSLint,可以在函数的底部放置一个return undefined;
,以便它始终显式返回某些内容。
现在,对于我的意见:
当涉及到事件侦听器时,只有有时返回值是 100% 可以接受的。使用事件侦听器return
值的浏览器内部引擎已编程为接受返回值或缺少返回值。
由于在事件侦听器中不返回值的做法是完全正常的,因此这不会损害代码的可读性。我认为在这种情况下,您可以安全地忽略 JSLint。