2016-01-19 65 views
0

我有像這樣如果你沒有返回任何東西,爲什麼函數返回undefined? JavaScript的

var tellMeTrueOrFalse = function(collection, callback){ 
    each(collection, function(item){ 
      console.log((callback(item))?true:false); 
     } 
    ); 
}; 

功能(each是表現得像下劃線的_.each功能)。但是,當我嘗試console.log()如下:

tellMeTrueOrFalse([1,2,3], function(x) {return x%2 == 0;}) 

我得到

false 
true 
false 
undefined 

爲什麼我收到undefined?當我沒有試圖返回什麼?我如何才能打印並且不返回undefined

+2

你在瀏覽器控制檯上運行它嗎? –

+0

當你在控制檯中運行代碼時,你得到了「未定義」 – aitnasser

+1

調用'tellMeTrueOrFalse'時不要執行'console.log'。只需調用它。回調函數將執行其他'console.log'。 –

回答

3

爲什麼我會變得不確定?當我不想回報什麼?

你得到undefined因爲一個函數總是會返回一些東西。如果沒有顯式的返回語句,則返回默認值。和函數的默認值是undefined按照mozilla docs

要返回默認值以外的值,函數必須有一個指定返回值 return語句。沒有返回語句的函數 將返回默認值。在使用new關鍵字調用的構造函數爲 的情況下,其默認值爲其參數的 值。 對於所有其他功能,默認的 返回值是未定義的。

+0

控制檯正在記錄你的'console.log()'的每個結果,加上你的函數tellMeTrueOrFalse(),它的值是'undefined'。 – ThiagoPXP

相關問題