【问题标题】:anonymous function doesn't always return a value匿名函数并不总是返回值
【发布时间】:2012-07-27 22:56:14
【问题描述】:

我有这样的 JavaScript 代码 =>

(function(){
    document.getElementById("element").onclick = function(){
        var r = confirm("Are you sure ?");
        if (r){
            return true;
        } else {
            return false;
        }
    }
})();

此脚本有效,但只是通知我严格警告 匿名函数并不总是返回值

我对这意味着什么很感兴趣,我怎样才能防止这种情况发生,它会引起任何问题吗?请问有什么想法吗?谢谢:)

【问题讨论】:

    标签: javascript komodo


    【解决方案1】:

    这不是因为匿名函数,而是因为 elsereturn 是多余的。你不需要它,因为 return 退出函数,如果if 语句不正确,那么默认的return 将执行。

    (function(){
        document.getElementById("element").onclick = function(){
            var r = confirm("Are you sure ?");
            if (r){
                return true;
            }
            return false;
        }
    })();
    

    编辑:

    正如星云所说,这可以做得更短:

    (function(){
        document.getElementById("element").onclick = function(){
            return confirm("Are you sure ?");
        }
    })();
    

    【讨论】:

    • return confirm("Are you sure ?"); 会有同样的效果,不是吗?
    • 所以这是警告,因为在其他情况下“返回”并不常见,是吗?
    • 基本上是的,returnelse 中并不常见,它在else ifswitch 中,但是单个if...else 是多余的。
    • 明白,但它仍然给我同样的警告,我正在使用 Komodo IDE,也许是 Komodo 的错?
    • 我有点困惑 :),因为在该文件中我有相同的脚本,但对于其他形式,在该脚本中它不会给我通知,但它下面的相同脚本会
    【解决方案2】:

    实际上你得到的strict warning是因为你的脚本中启用了strict mode,但是如果你的脚本中没有使用“use strict”,那么我认为,正如你在评论中所说,你正在使用Komodo IDE和很可能你已经安装了Firefox Extension for Debugging,它是支持 JavaScript 调试的浏览器端组件所必需的。

    如果是这样,那么它有一些您可以启用或禁用的设置。要禁用strict mode warnings,只需转到Edit Menu > Preferences > Javascript(来自类别)并取消选中Enable Strict Warning Messages,就是这样。但是使用strict mode 是一种很好的编程习惯。下面是帮助你的截图

    【讨论】:

    • 虽然名称有点混乱,但 Komodo 的“严格警告消息”与严格模式无关。他们是两个不同的东西。严格模式实际上改变了代码的语义。 Komodo 的严格警告只是对此类事情的额外警告;这些警告可以应用于任何代码,无论它是否使用严格模式。
    猜你喜欢
    • 1970-01-01
    • 2013-03-29
    • 2019-09-12
    • 2015-05-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多