在一个非常明显的数字变量上获取NaN

时间:2012-08-02 02:23:15

标签: javascript variables 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的数字指定给temp。但是,正如您所看到的,编程非常糟糕。我还应该注意,这不仅仅是用这个变量打破了,与我正在使用的库相关联的每个变量都是这样做的(我正在处理音乐可视化工具)。有谁知道为什么会发生这种情况?

编辑:我现在实际上无法访问代码来测试任何这些东西,因为这是一个公司项目,我不习惯打开一个jsfiddle。我只是想知道是否有人经历过这样的事情。我可以告诉你,我从这里得到了有问题的图书馆:http://gskinner.com/blog/archives/2011/03/music-visualizer-in-html5-js-with-source-code.html

1 个答案:

答案 0 :(得分:0)

如果它将变量值显示为NaN。然后尝试将变量转换为parseInt();方法。希望它有效。因为我也遇到了这样的问题并在尝试时解决了。