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

时间:2014-05-22 01:50:34

标签: javascript exception truthiness

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

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

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

false == {}   // false

({} == false) // false

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

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

1 个答案:

答案 0 :(得分:25)

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

如果你想到一个代码块,你知道像a = 5;这样的东西可能会出现在它之后:

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

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

{} a = 5;