JavaScript中对象可能为null或undefined时设置属性的更简洁方法
简化实现方案
你需要的是为errors对象设置新的表级错误,同时保留已有的行级错误不被覆盖,以下是几种更简洁的实现方式:
1. ES2020+ 单行写法(推荐)
errors = { ...errors ?? {}, table: { title: 'You must select at least one item to be returned.' } };
逻辑说明:
- 空值合并运算符
??会在errors为null/undefined时返回空对象,否则返回原errors对象 - 扩展运算符
...将原对象的所有属性(比如存储行级错误的rows属性)完整复制到新对象中 - 后续显式声明的
table属性会覆盖原有对象中可能存在的旧表级错误,不会影响其他属性,完全避免了行级错误被覆盖的问题
2. 兼容旧JS环境写法
如果项目暂不支持ES2020的空值合并语法,可以用逻辑或运算符替代:
errors = { ...(errors || {}), table: { title: 'You must select at least one item to be returned.' } };
3. 直接修改原对象写法
如果你不想生成新的对象,只需要在原对象基础上修改,可以用空值赋值运算符简化原有判断逻辑:
errors ??= {}; errors.table = { title: 'You must select at least one item to be returned.' };
以上几种写法的运行效果和你当前使用的if/else逻辑完全一致,代码更简洁易读。
内容的提问来源于stack exchange,提问作者jbyrd
相关产品推荐
相关产品推荐

