Подтвердить что ты не робот

Почему {} == false выдает исключение?

В IE и Chrome, введя это в консоль JavaScript, выдается исключение:

{} == false   // "SyntaxError: Unexpected token =="

Однако все эти операторы оцениваются без проблем:

false == {}   // false

({} == false) // false

var a = {};
a == false    // false

Это намеренное поведение? Почему это происходит?

4b9b3361

Ответ 1

В консоли, когда вы запускаете оператор с {}, вы не создаете объектный литерал, а блок кода (т.е. тот же блок, что и для оператора if или тела цикла). Тогда символ, как ==, очевидно, не ожидается.

Если вы думаете о блоке кода, вы знаете, что после него может получиться что-то вроде a = 5;:

if (some_condition) {
    // do something
}
a = 5;

Затем вы можете использовать это для тестирования в консоли и найти, что он работает очень хорошо:

{} a = 5;