只有当它真实时才能解构对象

时间:2018-01-19 10:02:28

标签: javascript ecmascript-6

假设我想像我这样构造我的函数参数

const func = ({field: {subField}}) => subField;

如果字段为undefinednull,如何防止此错误?

3 个答案:

答案 0 :(得分:5)

您可以使用默认值:

const func = ({field: {subField} = {}}) => subField;

它仅适用于{field: undefined},不适用于null作为值。为此,我只需使用

const func = ({field}) => field == null ? null : field.subField;
// or if you don't care about getting both null or undefined respectively
const func = ({field}) => field && field.subField;

有关一般解决方案,另请参阅javascript test for existence of nested object key

答案 1 :(得分:1)

您只能部分销毁并使用带有支票的subField参数。



var fn = ({ field }, subField = field && field.subField) => subField;

console.log(fn({ field: null }));




答案 2 :(得分:0)

修复null和undefined案例的好方法是以下

const func = ({field}) => {
   let subField = null;
   if(field) {
       ({subField} = field);
   }
   return subField
};

如果您只想处理未定义字段的情况,您可以

const func = ({field: {subField} = {}}) => subField;

如果fieldundefined,则默认空对象用作其值