【问题标题】:Different console.log(variable) outcomes for exactly the same variable完全相同的变量的不同 console.log(variable) 结果
【发布时间】:2014-10-31 14:01:12
【问题描述】:

我的问题是记录完全相同的变量值,但以不同的方式访问它会产生两个不同的结果。

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、数字和 car[ 的乘积1].wheels.radius,也是一个数字,所以应该返回一个数字。

有人知道问题可能是什么吗?

【问题讨论】:

  • 我们需要查看更多您的代码。
  • 发布您的实际代码
  • 我猜你首先打印car[1].wheels.radius,这会导致预期的输出20。但是你随后对其执行一些计算(它以某种方式失败并产生NaN),现在当你记录对象您在登录时没有看到该对象,但您在控制台中检查它时看到的对象可以解释差异
  • 除了 Quince 的评论,您可能还想查看 stackoverflow.com/questions/4057440/… 以了解有关此事的更多详细信息

标签: javascript object element elements console.log


【解决方案1】:

可以实际回答标题中关于为什么在记录变量时会得到不同结果的问题 -

如果将原语发送到日志,那么它会立即显示该值,因此在这种情况下,当您发送car[1].wheels.radius 时,它确实具有值20

但是,当您记录一个对象car[1] 时,直到您在控制台中检查该对象时才会真正显示属性的值(如果您使用的是 chrome,则有一点蓝色 (i) 可以解释这一点)。将其想象为您正在记录引用,在您展开/检查该引用之前,不会显示实际的对象状态。

因此,您正在对 car[1].wheels.radius 执行一些计算,将其从 20 更改为 NaN,从而解释了差异。

从您显示的代码量中无法得知该问题的原因。使用调试器单步调试您的代码并查看该值何时发生变化。

【讨论】:

  • 谢谢,这正是我面临的问题;我现在解决了!
  • 如果这回答了标题中的问题,您可以标记为答案
猜你喜欢
  • 1970-01-01
  • 2020-03-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多