我的问题是记录完全相同的变量值,但以不同的方式访问它会产生两种不同的结果。
console.log(car[1].wheels.radius)
将整数20记录到控制台,因为20是分配给car [1] .wheels.radius的值。
现在,如果我记录整个对象:
console.log(car[1])
并在控制台中手动访问元素半径,我可以看到它的值是' NaN'。
当我在计算中使用car [1] .wheels.radius时也是如此,例如3.14 * car [1] .wheels.radius返回NaN,即使这是乘法3.14,数字和车[ 1] .wheels.radius,也是一个数字,所以它应该返回一个数字。
任何人都知道问题可能是什么?
答案 0 :(得分:1)
可以实际回答标题中关于为什么在记录变量时得到不同结果的问题 -
如果将原语发送到日志,则会立即显示该值,因此在这种情况下,当您发送car[1].wheels.radius
时,它的值为20
。
但是,当您记录一个对象car[1]
时,在您检查控制台中的对象之前,实际上不会显示属性的值(如果您使用的是chrome,则会有一点蓝色(i)解释这个)。您可以将其视为记录引用,在展开/检查该引用之前,实际对象状态将不会显示。
因此,您在car[1].wheels.radius
上执行了一些计算,在某些时候将其从20
更改为NaN
,这解释了差异。
从您显示的代码数量来看,该问题的原因未知。使用调试器逐步执行代码,并查看此值何时更改。