匿名函数并不总是返回值

nan*_*ash 6 javascript komodo

我有像这样的JavaScript代码=>

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

这个脚本有效,但只是给了我关于严格警告的通知,匿名函数并不总是返回一个值

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

elc*_*nrs 8

这不是因为匿名功能,而是因为elsereturn是多余的.你不需要它,因为return退出函数,如果if语句不为true则默认return将执行.

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

编辑:

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

(function(){
    document.getElementById("element").onclick = function(){
        return confirm("Are you sure ?");
    }
})();
Run Code Online (Sandbox Code Playgroud)


The*_*pha 6

实际上strict warning你是因为在你的脚本中启用了严格模式但是如果你的脚本中没有使用"use strict"那么我认为,正如你在评论中说的那样你正在使用Komodo IDE并且很可能你已经安装了Firefox Extension for Debugging需要支持的JavaScript调试的浏览器端组件.

如果是这样,那么它有一些你可以使用或禁用的设置.要禁用,strict mode warnings只需转到" 编辑"菜单>"首选项">"Javascript"(从类别中),然后取消选中"启用严格警告消息"即可.但使用strict mode是一种很好的编程习惯.以下是帮助您的截图

在此输入图像描述

  • 虽然名称有点令人困惑,但科莫多的"严格警告信息"与严格模式无关.他们是两个不同的东西.严格模式实际上会更改代码的语义.科莫多的严格警告只是对这类事情的额外警告; 这些警告可以应用于任何代码,无论它是否使用严格模式. (2认同)