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
相关产品推荐
相关产品推荐

