2014-03-03 122 views
0

我寫了以下簡單的JavaScript代碼。但是每當我運行它時,都會顯示「Undefined」。爲什麼這個Javascript函數在調用時返回「Undefined」?

以下是代碼:

function naturalSum(num1,num2) { 
    var sumValue = 0; 
    for (i=0;i<1000;i++) 
    { 
     if (i%num1 === 0 || i%num2 === 0) { 
      sumValue += i ;  
     } 
    } 
} 
document.write(naturalSum(3,5)); 

我想知道爲什麼發生這種情況。當我沒有在函數中包含代碼時,代碼工作正常。請幫助我。

+2

你沒有發佈'return'電話,還是你的問題 – SmokeyPHP

回答

3

JavaScript函數默認返回undefined,除非您明確返回某些內容。

所以,如果你希望你的函數返回sumValue,你應該添加return sumValue;爲函數的最後一行:

function naturalSum(num1,num2) { 
    var sumValue = 0; 
    for (i=0;i<1000;i++) 
    { 
     if (i%num1 === 0 || i%num2 === 0) { 
      sumValue += i ; 
     } 
    } 
    return sumValue; 
} 

@AmitJoki創建的jsfiddle證明:

+1

嗨,我剛剛創建了一個小提琴,當你的答案出現時。你可以包括嗎?該網址是http://jsfiddle.net/dgC46/ –

+0

@AmitJoki:當然。 –

1
function naturalSum(num1,num2) 
{ 
    var sumValue = 0; 
    for (i=0;i<1000;i++) 
    { 
     if (i%num1 === 0 || i%num2 === 0) 
     { 
      sumValue += i ; 
     } 
    } 
    //You forgot to return the value 
    return sumValue; 
} 
document.write(naturalSum(3,5)); 
+0

是的,問題解決了。但是,我還有一個問題。我用這樣的return關鍵字: function naturalSum(num1,num2) { var sumValue = 0; (i = 0; i <1000; i ++) { return sumValue + = i; if(i%num1 === 0 || i%num2 === 0) } } } document.write(naturalSum(3,5)); 但是,然後編輯器顯示一個錯誤,返回說明該函數並不總是返回一個值。 我想問問爲什麼會發生這種情況? – saadi123

+1

@ saadi123:我懷疑這是因爲你把你的return語句放在'if'語句中,所以只有在if條件爲真時纔會調用它。 –

+0

@ Dennington-bear:來自Pedant's Corner:在if語句之外但是在for語句中的返回語句會在for循環首次運行時返回該函數。它永遠不會增加,因爲return語句會在函數有機會之前使函數返回。 –