Почему следующий недопустимый JavaScript?Объявление переменной внутри оператора if в JavaScript
if (var foo = (true || false)) {
console.log(foo);
}
Почему следующий недопустимый JavaScript?Объявление переменной внутри оператора if в JavaScript
if (var foo = (true || false)) {
console.log(foo);
}
Посмотрите здесь:
http://www.ecma-international.org/ecma-262/5.1/#sec-12.5
затем здесь:
http://www.ecma-international.org/ecma-262/5.1/#sec-11
И вывод, что синтаксис не действует из-за:
http://www.ecma-international.org/ecma-262/5.1/#sec-12.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!
Попробуйте это:
var foo = true || false;
if (foo) {
console.log(foo);
}
Разместите объявление первым, а затем проверьте состояние.
Вы можете сделать так:
var foo;//declare the variable first
if (foo = (true || false)) { //then assign the value for foo
console.log(foo);
}
Вы не можете создавать объявления переменной внутри, если заявление.
Что вы ожидаете от этого кода? – Lix
Запишите 'true' на консоль. – Ben
Можете ли вы объяснить, как вы ожидаете этого вывода? Как вы считаете, что этот код должен быть выполнен? Почему вы думаете, что переменная * присваивание * вернет логическое значение? – Lix