2012-04-25 102 views
1

我有下面的代碼:函數返回正確的值和「未定義」

module = { 

     submodule: { 

      value: 'foo', 

      init: function(){ 
       console.log(module.submodule.value); 
      } 

     } 

    }; 

當我通過控制檯測試此代碼,我得到正確的價值和undefined,但是當我使用相同的代碼與return語句中init函數我只得到正確的值。我想這是那些常見的初學者和微不足道的問題之一,但我目前無法圍繞這個:)

回答

3

你的函數沒有返回任何東西。控制檯只顯示函數的返回值。沒有必要爲你的函數返回的東西,但如果你想在控制檯終於展現「值」,然後使用

module = { 

     submodule: { 

      value: 'foo', 

      init: function(){ 
       return module.submodule.value; 
      } 

     } 

    }; 

什麼情況是,每一個功能「返回」的東西。這東西可以用作其他地方的輸入。例如,

function getName(){ 
return "Manish"; 
} 

alert(getName()) //will display "Manish" sans quotes 

你可以做的東西一樣

function sin(theta){ 
//do some math voodoo, store result in "result" 
return result; 
} 
alert((sin(theta)*sin(theta)-5)/Math.sqrt(1-sin(theta)*sin(theta))//random thingy 

但是,如果你決定不能讓您的函數返回的東西(或使用return;,因爲它可馬上退出功能),它會返回一個未定義的值,因爲,你好,沒有定義你想要它返回。沒關係,只要你不嘗試使用返回的值。

3

控制檯返回未定義,因爲你的方法沒有返回任何值,控制檯總是輸出返回一個功能從控制檯調用時。

如果在init方法中添加return true,它將輸出值併爲true。

這只是控制檯的行爲,你沒有看到任何錯誤。