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

JS中函数参数使用逻辑或运算符为何未评估后续字符串值?

逻辑或在函数参数中的误区与正确用法

为什么逻辑或只评估第一个参数?

JavaScript里的||(逻辑或)是短路求值逻辑:只要遇到第一个“真值”(非空字符串、非0、非null/undefined等)就会立即返回该值,不会再继续评估后面的表达式。

你写的'B2Bvr' || 'Cvr' || undefined中,'B2Bvr'是字符串,属于真值,所以整个表达式直接返回'B2Bvr',完全不会考虑后面的'Cvr',这就是为什么后端返回Cvr时你拿不到对应错误信息的原因。

函数参数中实现“多值匹配”的正确方式

方式1:修改原函数支持多参数

把getByTitle改成接收多个标题参数,遍历查找第一个匹配的错误:

const getByTitle = (...memberTitles) => {
  for (const title of memberTitles) {
    const matchError = state.errors.find(e => e.meta.memberTitle === title);
    if (matchError) {
      return matchError.content.error.title;
    }
  }
  return undefined;
}

调用时直接传入多个参数:

getNumber() {
  return this.getErrorByMemberId('B2Bvr', 'Cvr');
},

方式2:不修改原函数,多次调用并利用短路逻辑

如果不想改动原函数,可以依次调用函数,用||取第一个有效结果:

getNumber() {
  return this.getErrorByMemberId('B2Bvr') || this.getErrorByMemberId('Cvr');
},

这里会先调用getErrorByMemberId('B2Bvr'),如果返回有效错误信息就直接用;如果返回undefined(没找到),才会继续调用第二个参数的方法。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 09:20:33