Javascript 取消结构具有空值的嵌套对象导致“;TypeError:无法读取属性';obj2';“无效”的定义;
我尝试解构具有null值的嵌套对象,但它会导致“TypeError:无法读取null的属性'obj2' 我读过关于修复它的文章,但它不适用于嵌套元素 看一下代码片段Javascript 取消结构具有空值的嵌套对象导致“;TypeError:无法读取属性';obj2';“无效”的定义;,javascript,null,destructuring,Javascript,Null,Destructuring,我尝试解构具有null值的嵌套对象,但它会导致“TypeError:无法读取null的属性'obj2' 我读过关于修复它的文章,但它不适用于嵌套元素 看一下代码片段 consttmp={obj:null}; 设{obj:{obj2}={}}=tmp | |{}您将无法通过分解结构来实现这一点。简单地说,与deafult functin参数一样,只有当值未定义,而不是null或其他假值时,才会应用默认的解构值 作为替代方案,您可以执行以下操作: consttmp={obj:null}; 设ob
consttmp={obj:null};
设{obj:{obj2}={}}=tmp | |{}代码>您将无法通过分解结构来实现这一点。简单地说,与deafult functin参数一样,只有当值未定义,而不是null或其他假值时,才会应用默认的解构值
作为替代方案,您可以执行以下操作:
consttmp={obj:null};
设obj2=tmp&&tmp.obj&&tmp.obj.obj2代码>您将无法通过分解结构来实现这一点。简单地说,与deafult functin参数一样,只有当值未定义,而不是null或其他假值时,才会应用默认的解构值
作为替代方案,您可以执行以下操作:
consttmp={obj:null};
设obj2=tmp&&tmp.obj&&tmp.obj.obj2代码>ES6只有当属性未定义时,才会对默认值进行解构。在任何其他情况下,它将获得传递的赋值。甚至Javascript也有错误的值
规避这种情况的一种方法是缩短可能的错误值,在本例中,obj
将为null
consttmp={obj:null};
常数{obj}=tmp;
常量{obj2={}}=obj | |{};
控制台日志(obj);
console.log(obj2);
ES6只有当属性未定义时,才会对默认值进行解构。在任何其他情况下,它将获得传递的赋值。甚至Javascript也有错误的值
规避这种情况的一种方法是缩短可能的错误值,在本例中,obj
将为null
consttmp={obj:null};
常数{obj}=tmp;
常量{obj2={}}=obj | |{};
控制台日志(obj);
console.log(obj2);
谢谢大家@Dez@junvar
我将代码更改为:
const tmp = { obj: null };
const obj2 = tmp?.obj?.obj2;
console.log(obj2);
谢谢大家@Dez@junvar
我将代码更改为:
const tmp = { obj: null };
const obj2 = tmp?.obj?.obj2;
console.log(obj2);