2012-08-02 61 views
0

這是迄今爲止我見過的最奇怪的錯誤。在一個非常明顯的數字變量上獲得NaN

在我的程序中,我有一個名爲avgVolMix的變量。它是一個十進制變量,不是NaN(console.log(avgVolMix)打印類似0.3526246的東西)。但是,在賦值語句中使用變量會導致它破壞試圖將其用於NaN的任何內容。例如:

console.log(avgVolMix); <- prints a working decimal 
var moveRatio = 10 + avgVolMix * 10; 
console.log(moveRatio); <- prints NaN 

我真的不知道爲什麼會發生這種情況。我試過一切來修復它;我將它轉換爲一個字符串,然後返回,將其舍入到小數點後兩位,並將0.0001加到它 - 沒有任何作用!這是唯一的辦法,我可以得到它的「工作」,現在:

var temp = 0.0; 
for(i = 0; i <= avgVolMix; i+=0.1) 
    temp = i; 

這個分配一個編號,即接近avgVolMix來臨時。但是,正如你所看到的,這是非常糟糕的編程。我還應該注意到,這不僅僅是因爲這個變量而被破壞,與我正在使用的庫相關的每個變量都會這樣做(我正在使用音樂可視化工具)。有誰知道爲什麼會發生這種情況?

編輯:我現在實際上無法訪問代碼來測試這些東西,因爲這是一個公司項目,我不太願意打開一個jsfiddle。我只是想知道有沒有人經歷過這樣的事情。我可以告訴你,我從這裏得到了問題庫:http://gskinner.com/blog/archives/2011/03/music-visualizer-in-html5-js-with-source-code.html

+1

'avgVolMix'從哪裏來? – mariusnn 2012-08-02 02:26:07

+0

如果你執行'console.log(parseFloat(moveRatio))'會發生什麼? – 2012-08-02 02:28:14

+2

'typeof avgVolMix'顯示什麼? – j08691 2012-08-02 02:29:11

回答

0

如果它顯示變量值爲NaN。然後嘗試將該變量轉換爲parseInt();方法。希望它有效。因爲我也遇到過這樣的問題,並在嘗試時解決。