2012-07-27 84 views
6

我有JavaScript代码像这样=>匿名函数并不总是返回值

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

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

我对这意味着什么感兴趣,我该如何防止它,并会引发任何问题?请有什么想法?谢谢:)

回答

8

这不是因为匿名函数,这是因为elsereturn是多余的。如果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 ?"); 
    } 
})(); 
+0

'返回确认(“你确定吗?”);'都会有同样的效果,不是吗? – nebulae 2012-07-27 23:00:45

+0

是的,它只是想显示为什么警告。 – elclanrs 2012-07-27 23:01:22

+0

所以它是警告,因为在其他“返回”不常见,是吗? – tnanoba 2012-07-27 23:02:44

6

其实strict warning你得到,因为在你的脚本,但如果启用strict mode“严格使用“并没有在您的脚本中使用,那么我认为,正如您在评论中所说,您使用的是Komodo IDE,而且很可能是您已安装Firefox Extension for Debugging,这是支持JavaScript调试的浏览器端组件所必需的。

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

enter image description here

+2

虽然名称有点混淆,科莫多的“严格警告信息”与严格模式没有任何关系。他们是两个不同的东西。严格模式实际上改变了你的代码的语义。科莫多的严格警告只是对这样的事情的额外警告;这些警告可以应用于任何代码,无论是否使用严格模式。 – 2013-04-13 08:34:20