2010-10-07 2 views
6

Когда я запускаю «var variable = true;» в хроме консоль я получаю «неопределенный» вернулась:"var variable" возвращает undefined?

> var variable = true; 
undefined 

Но когда я бег без «вара» он возвращает истину:

> variable = true; 
true 

Почему это возвращение «неопределенный» с «варом»?

Это запутанная причина, я ожидал, что она вернется.

ответ

5

Первый - это утверждение, а второе - выражение. Хотя это и не совсем то же самое, аналогично правила языка C: (?)

// A statement that has no value. 
int x = 5; 

// An expression... 
x = 10; 

// ...that can be passed around. 
printf("%d\n", x = 15); 
+0

Действительно ли это js-код для использования «var variable = true;» или я должен запустить переменную var, variable = true; "? –

+0

@ajsie - это верно, и оба утверждения эквивалентны. – Oded

+0

Да, это действительно код. Вы можете подтвердить это, оценив «переменную» после выполнения инструкции. –

1

уступка возвращает значение ассигнационного, но с var этим возвращением «потребленное»

2

var x = y; является заявления которых не возвращает значение. В консоли WebKit JS оператор, который не возвращает значение, будет отображать undefined в качестве результата, например.

> if(1){} 
undefined 
> ; 
undefined 
> if(1){4} // this statement returns values! 
4 

Присвоение является выражением , которая возвращает значение LHS. Это означает, что выражение выражения имеет возвращаемое значение, и это будет показано.