如何在JavaScript/TypeScript的if条件中避免重复书写同一对象?
在JavaScript/TypeScript中避免重复书写对象的方案
针对你提出的在if条件中重复书写对象A的问题,这里提供几种实用的解决方式:
1. 使用数组的some方法
通过将需要比较的值放入数组,结合some方法只需要写一次A,就能实现原条件的逻辑:
if ([null, B].some(item => A !== item)) { // 执行操作 }
some方法会遍历数组,只要A不等于数组中的任意一个元素,就会返回true,和原条件A != null || A != B的逻辑完全一致。
2. 提取临时变量
如果A是复杂表达式(比如obj.deep.nested.property),可以先将其赋值给临时变量,减少重复书写的同时避免多次计算:
const currentVal = A; if (currentVal != null || currentVal != B) { // 执行操作 }
3. 自定义工具函数
如果这类比较场景频繁出现,可以封装通用工具函数进一步简化代码:
function notEqualToAny(target, ...comparators) { return comparators.some(c => target !== c); } // 调用示例 if (notEqualToAny(A, null, B)) { // 执行操作 }
补充说明
你给出的原条件A != null || A != B逻辑上几乎永远为true,仅当A和B同时为null时才返回false。如果实际需求是A既不为null也不等于B(即A != null && A != B),只需把some替换为every即可:
if ([null, B].every(item => A !== item)) { // 执行操作 }
内容的提问来源于stack exchange,提问作者devludo
相关产品推荐
相关产品推荐

