为什么 JSLint 说事件处理程序"anonymous function does not always return a value"?



当我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。

相关内容

最新更新