2013-11-14 19 views
0

下面是代碼:將函數從obj傳遞到數組。然後加起來數組,但結果是NaN。爲什麼?

var myObject = { 
    x: 5, 
    h: function(){ 
    varOne = 2*2; 
    varTwo = 3*2; 
    varThree = varOne*varTwo; 
    }, 
    d: 4 
}; 

var g = myObject.h(); 
var xyz = g; 
var abc = 2; 
var efg = 3; 
var somearray = [xyz,abc,efg]; 
var z = 0; 
for(i=0; i<somearray.length; i++){ 
    z += somearray[i]; 
} 

的結果爲NaN。爲什麼是這樣?如果我這樣做: h:function(){return 2 * 2;},那麼我沒有問題。我是JS的新手,我花了很多時間在互聯網上尋找一個無濟於事的答案。我是否需要使用parseInt或parseFloat,如果是,我應該使用哪個變量?提前致謝。

+0

使用更具描述性的變量名稱解析他們,這將是更容易跟蹤。 – rninty

回答

5

你是不是從函數返回的任何值h所以它返回undefined這NaN的加入結果時,嘗試:

h: function(){ 
    var varOne = 2*2; 
    var varTwo = 3*2; 
    return varOne*varTwo; 
}, 

還要考慮使用的範圍定義的變量var關鍵字否則你將結束污染全球。

由於您的變量分配數值,則不需要使用parseInt

+0

YAY!非常感謝!我覺得自己像個白癡。它完美的工作! – HST

+0

@HST不用擔心。如果您滿意,請記住標記答案。 – PSL

+0

會做。我只是等待,直到它讓我在6分鐘內完成。 – HST