2014-09-03 5 views
2

Почему следующий недопустимый JavaScript?Объявление переменной внутри оператора if в JavaScript

if (var foo = (true || false)) { 
    console.log(foo); 
} 
+0

Что вы ожидаете от этого кода? – Lix

+0

Запишите 'true' на консоль. – Ben

+0

Можете ли вы объяснить, как вы ожидаете этого вывода? Как вы считаете, что этот код должен быть выполнен? Почему вы думаете, что переменная * присваивание * вернет логическое значение? – Lix

ответ

2

Когда вы объявляете переменную в JavaScript присваивание будет возвращать значение новой переменной, так что вы можете сделать что-то вроде этого:

if (foo = (true||false)) console.log('Hello!'); 

> Hello! 

Теперь, если вы звоните foo это будет иметь значение true:

console.log(foo); 

> true 

Вы не использовать var личное слово, потому что if это утверждение, а не функция. Если вы хотите быть уверены в сферу вашей переменной, то вы должны объявить его первым:

var foo; 
if (foo = (true||false)) console.log('Hello!'); 

> Hello! 
0

Попробуйте это:

var foo = true || false; 
if (foo) { 
    console.log(foo); 
    } 

Разместите объявление первым, а затем проверьте состояние.

0

Вы можете сделать так:

var foo;//declare the variable first 
if (foo = (true || false)) { //then assign the value for foo 
    console.log(foo); 
} 

Вы не можете создавать объявления переменной внутри, если заявление.

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