Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/436.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 取消结构具有空值的嵌套对象导致“;TypeError:无法读取属性';obj2';“无效”的定义;_Javascript_Null_Destructuring - Fatal编程技术网

Javascript 取消结构具有空值的嵌套对象导致“;TypeError:无法读取属性';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

我尝试解构具有null值的嵌套对象,但它会导致“TypeError:无法读取null的属性'obj2'

我读过关于修复它的文章,但它不适用于嵌套元素

看一下代码片段

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.obj2ES6只有当属性
未定义时,才会对默认值进行解构。在任何其他情况下,它将获得传递的赋值。甚至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);