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

短路运算写法疑问:为何i.highlighted=false赋值语句无法生效?

为什么短路运算的这种写法会报错?

你遇到的问题核心是运算符优先级导致的语法错误。

在JavaScript里,逻辑与&&的优先级比赋值运算符=要高,所以你写的这段代码:

i.thirdParty.goodreads.rating < 4.2 && i.highlighted = false;

会被JS引擎解析成:

(i.thirdParty.goodreads.rating < 4.2 && i.highlighted) = false;

左边的(条件 && i.highlighted)是一个表达式,它的结果是一个值(要么是i.highlighted的当前值,要么是条件不满足时的false),而赋值运算符=的左边必须是一个可被赋值的“左值”(比如对象属性、变量这类可以存储值的引用),显然表达式的结果不是左值,所以JS会直接抛出语法错误。

再看你能正常运行的第二种写法:

i.highlighted = i.thirdParty.goodreads.rating < 4.2 && false;

这里赋值运算符=的优先级最低,所以会先计算右边的条件 && false,得到结果后再赋值给i.highlighted,这完全符合语法规则。

如果想要用&&短路的方式直接执行赋值操作,给赋值语句加个括号就能解决优先级问题:

i.thirdParty.goodreads.rating < 4.2 && (i.highlighted = false);

内容的提问来源于stack exchange,提问作者Chen Ching

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 21:03:08