JavaScript坚持认为0是NaN
所以我用JavaScript制作了一个直方图,当我初始化它时,每个箱子都有一个属性“contents”,初始化为0:JavaScript坚持认为0是NaN,javascript,nan,Javascript,Nan,所以我用JavaScript制作了一个直方图,当我初始化它时,每个箱子都有一个属性“contents”,初始化为0: for (var rBin = 0; rBin < 255; rBin += 16) { for (var gBin = 0; gBin < 255; gBin += 16) { for (var bBin = 0; bBin < 255; bBin += 16) { histogram[j] = {r:rBin,
for (var rBin = 0; rBin < 255; rBin += 16) {
for (var gBin = 0; gBin < 255; gBin += 16) {
for (var bBin = 0; bBin < 255; bBin += 16) {
histogram[j] = {r:rBin, g:gBin, b:bBin, contents:0, width:16};
j += 1;
}
}
}
它变得更奇怪了。如果我只记录直方图[0]
,则它工作正常,并提供:
Object {r: 0, g: 0, b: 0, contents: 0, width: 16}
我做错了什么
编辑:
使用以下行完成日志记录:
console.log(histogram);
console.log(histogram[0]);
编辑2:
在调试器中暂停此操作将显示直方图正确存储在
console.log(直方图[0])
行上,而不是console.log(直方图)
…要详细说明上述注释,某些浏览器上的控制台提供了您记录的对象的“实时”视图。例如,当复合对象(或数组)展开时,Firebug将显示最新数据。(此外,似乎是这样的。)
因此,至少在Firebug中,记录不可扩展信息(如直方图[0]
)将导致“静态”数据不会更改,而记录可扩展信息(如直方图
)将导致“动态”数据,反映对象在扩展时的状态,在登录时没有
在您的特定情况下,代码中的某些内容会在您记录后碰撞内容的值,但由于您正在扩展记录的对象,因此您将看到碰撞的值,而不是原始值
从你的评论来看,这似乎涉及到一个部门。它可能是被零除,因为contents
最初是0
,而0/0
产生NaN
这可能与您在第一次日志记录中访问“直方图”的方式有关。你能添加那个代码吗?你在这里发布的代码不能这样做,所以你必须对其他代码中的值做一些其他的操作@Tom,所以看起来内容后来确实发生了变化。您应该仔细检查对它执行的进一步操作(查找错误地涉及字符串的算术运算)。啊@FrédéricHamidi,你搞定了-我后来删除了一个除法(我现在将探究为什么我的整数除法会导致NaN出现),这就解决了它@克里斯,谢谢,完成了。
console.log(histogram);
console.log(histogram[0]);