2015-01-11 25 views
0

我是一個更多的C++和Java程序員,這是我第一次嘗試使用JavaScript做些事情。我有一個持有數組的對象,以及一個應該返回該數組長度的函數。兩個數字的JavaScript乘法返回NaN

var graphData = { 
     labels : ["label1", "label2", "label3"], 
     numData : function() { 
      return (Number(this.labels.length));} 
     } 

現在我想要做的是根據此數組的大小調整div的大小。

var barWidth = 13; 
    var viewWidth = barWidth * graphData.numData; 

現在,這只是不工作。當我檢查typeof viewWidth時,它返回NaN。我也嘗試將操作數「鑄造」爲Number(),但它不起作用。我究竟做錯了什麼?

+1

您確定graphData的定義與您在此放置的完全相同嗎?因爲該返回和同一行末尾的分號會是兩個語法錯誤。 –

+0

謝謝我做了編輯。 –

+0

所以你在那裏有一個功能。你也必須**調用這個函數。 –

回答

2

您必須調用函數graphData.numData()而不是graphData.numData,因爲它不是一個屬性,並且可以解決問題。

var graphData = { 
    labels : ["label1", "label2", "label3"], 
    numData : function(){return +(this.labels.length);} 
} 

var barWidth = 13; 
var viewWidth = barWidth * graphData.numData(); 
+1

請**解釋**問題和您的解決方案。 –

+1

@vjdhama我實際上已經將它包含在一個函數表達式中。 –

+1

解決方案的另一個因素是,在'graphData.numData'中是一個函數,而不是數字。因此,'barWidth * graphData.numData'將生成一個'NaN',但是'barWidth * graphData.numData()'將檢索所需的值,然後將其乘以「barWidth'。 –