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

为什么判断数组长度执行逻辑时ESLint报no-unused-expression错误?

报错根因

no-unused-expressions ESLint规则的作用是禁止执行无返回值消费的独立表达式,避免无用代码或者逻辑书写错误。
你当前的写法直接将三元运算符作为独立语句使用,没有接收和使用三元运算的返回值,恰好触发了该规则校验:三元运算符本质是表达式,设计上是用来根据条件返回对应值的,不是用来替代if-else做纯副作用的分支执行的,这种场景下三元运算的返回值完全没有被用到,自然会被规则判定为无效表达式。

额外提一个你代码里的性能问题:你把dispatch(setTotal(totalPrice))写在了forEach循环内部,当cart存在多个商品时,每遍历一个商品就会触发一次dispatch,属于不必要的重复执行,完全可以算完总价后再统一执行一次dispatch。

推荐优化写法
useEffect(() => {
  // 用reduce直接计算总价,cart为空时会直接返回初始值0
  const totalPrice = cart.reduce((sum, item: AsideItemInterface) => {
    return sum + item.quantity * item.price
  }, 0)
  dispatch(setTotal(totalPrice))
}, [cart]);

上面的写法不需要手动判断cart是否为空,逻辑更简洁,也不会触发ESLint报错。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 18:54:06