2014-10-31 5 views
-1

Моя проблема заключается в том, что запись точно такого же значения переменной, но доступ к ней по-другому дает два разных результата.Различные результаты console.log (переменные) для одной и той же переменной

console.log(car[1].wheels.radius) 

регистрирует число 20 на консоли, так как 20 это значение, присвоенное автомобиля [1] .wheels.radius.

Теперь, если я вхожу весь объект:

console.log(car[1]) 

и доступ радиус элемента вручную в консоли, я вижу, что его значение «NaN».

То же самое происходит, когда я использую автомобиль [1] .wheels.radius в расчете, например 3.14 * автомобиль [1] .wheels.radius возвращает NaN, хотя это умножение на 3,14, число и автомобиль [1] .wheels.radius, также число, поэтому оно должно возвращать число.

Кто-нибудь знает, в чем проблема?

+0

Нам нужно больше узнать о вашем коде. – jmar777

+2

Опубликуйте свой фактический код – tymeJV

+4

Имейте в виду, что вы печатаете 'автомобиль [1] .wheels.radius' первым, что приводит к ожидаемому выводу 20. Но вы затем выполняете некоторые вычисления на нем (что не удается каким-то образом и производит NaN) теперь, когда вы регистрируете объект, вы не видите объект во время регистрации, но объект в то время, когда вы проверяете его в консоли, которая может учитывать разницу. – Quince

ответ

1

ОК на самом деле ответить на вопрос в названии о том, почему вы получите разные результаты при входе переменной -

Если примитив отправляется в журнал, то он сразу же отображается со значением, так и в этом случае, когда вам отправьте car[1].wheels.radius, оно имеет значение 20.

Однако при регистрации объекта car[1] значения атрибутов фактически не отображаются до тех пор, пока вы не осмотрите объект в консоли (если вы используете хром, то это немного синий (i), который объясняет это). Подумайте об этом, как будто вы регистрируете ссылку, фактическое состояние объектов не будет отображаться до тех пор, пока вы не откроете или не проверите эту ссылку.

Так вы делаете некоторые вычисления на car[1].wheels.radius, который меняет его с 20 на NaN в какой-то момент, что объясняет разницу.

Причина этой проблемы неизвестна из количества кода, который вы указали. Используйте отладчик, чтобы выполнить свой код и посмотреть, когда это значение изменится.

+0

Спасибо за это, это была именно та проблема, с которой я столкнулся; Я решил это сейчас! – wit221

+0

Если это ответ на вопрос в названии, вы можете отметить как ответ – Quince

Смежные вопросы