为什么{} == false会抛出异常?

Jon*_*onn 23 javascript exception truthiness

在IE和Chrome中,在JavaScript控制台中输入此内容会引发异常:

{} == false   // "SyntaxError: Unexpected token =="
Run Code Online (Sandbox Code Playgroud)

但是,所有这些语句的评估都没有问题:

false == {}   // false

({} == false) // false

var a = {};
a == false    // false
Run Code Online (Sandbox Code Playgroud)

这是故意的行为吗?为什么会这样?

ajp*_*243 25

在控制台中,当您使用时启动语句时{},您不是创建对象文字,而是创建代码块(即与使用if语句或循环体创建的块相同).==之后显然不会出现像这样的符号.

如果你想到一个代码块,你知道a = 5;可能会有类似的东西:

if (some_condition) {
    // do something
}
a = 5;
Run Code Online (Sandbox Code Playgroud)

然后,您可以使用它在控制台中进行测试,并发现它可以正常工作:

{} a = 5;
Run Code Online (Sandbox Code Playgroud)