You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何JavaScript中交换逻辑与运算符操作数会触发语法错误?

为什么{} && 1会触发语法错误而1 && {}不会?

这是JavaScript语法解析规则导致的:

  • 当{}出现在代码的开头位置时,会被解析成空代码块(block statement),而非对象字面量。所以{} && 1会被拆解成「一个空代码块」加「&& 1」,这完全不符合语法规范,因此抛出Unexpected token '&&'的错误。
  • 但1 && {}里的{}处于表达式右侧,属于表达式上下文,会被正确识别为对象字面量,逻辑与运算正常执行,最终返回{}。

同样的问题也会出现在逻辑或运算符||上:1 || {}能正常返回1,但{} || 1会触发相同的语法错误。

如果想让开头的{}被当成对象处理,只需把它包裹在括号里,强制进入表达式上下文:

({} && 1) // 返回1
({} || 1) // 返回{}

内容的提问来源于stack exchange,提问作者Prakhar Tripathi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 15:54:53