首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么JSLint说“匿名函数并不总是返回一个值”的事件处理程序?

为什么JSLint说“匿名函数并不总是返回一个值”的事件处理程序?
EN

Stack Overflow用户
提问于 2015-03-16 16:14:22
回答 1查看 920关注 0票数 0

当我JSLint这个代码时:

代码语言:javascript
复制
$(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收到了大量的警告,其中大部分是我感到恶心的,但这一次让我感到困惑:“匿名函数并不总是返回值”

它为什么这么说?事件处理程序不是匿名函数,对吗?反正它也没有任何价值,是吗?那么,这意味着什么,以及什么会使林特平静下来?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-03-16 16:40:13

JSLint警告您,任何时候函数都有一些分支遇到return,而其他分支在没有遇到return的情况下终止。JSLint认为函数应该总是显式返回值,或者永远不显式返回值。有时显式返回值的函数会给自己带来警告。您的代码只在一种情况下执行return false,否则就不会使用return

如果您想要安抚JSLint,您可以在函数的底部放置一个return undefined;,以便它总是显式地返回一些内容。

现在,在我看来:

当涉及事件侦听器时,只在有时返回值是100%可以接受的。使用事件侦听器return值的浏览器内部引擎已经被编程为接受返回值或缺少返回值。

因为在事件侦听器中不返回值的做法是完全正常的,这不会损害代码的可读性。在这种情况下,我认为您可以安全地忽略JSLint。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29081696

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档