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

标签 javascript exception truthiness

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

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

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

false == {}   // false

({} == false) // false

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

这是故意行为吗?为什么会出现这种情况?

最佳答案

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

如果您想到代码块,您就会知道类似 a = 5; 的内容可能会出现在它后面:

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

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

{} a = 5;

关于javascript - 为什么 {} == false 会抛出异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23796596/

相关文章:

python - 测试通过函数传递到 if 语句中的 Truthy 或 Falsy 参数

javascript - Node.js Cookie 不起作用

javascript - 为什么jQuery显示&隐藏效果只对嵌入式css显示有效 :none?

JavaScript异常处理——显示行号

javascript - 为什么 'false' 在 javascript 中是真实的?

r - 连续测试多个 %in% 是什么意思?

javascript - XMPP 一次仅接收一条消息

javascript - 如何使用带有表单和json的javascript然后输出json数据?

c# - 事件源异常 : No Free Buffers available from the operating system

php - 为什么PHP的 “trigger_error”返回true?