2012-07-27 40 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