Javascript 嵌套对象分解-如何处理可能丢失的嵌套对象

Javascript 嵌套对象分解-如何处理可能丢失的嵌套对象,javascript,Javascript,我努力想弄明白这一点。在下面的小提琴中,我如何解释itemChild可能不在那里的原因? 当我删除它时,我得到以下错误 (索引):49未捕获类型错误:无法读取未定义的属性“cat” const项={ 名称:“第一项”, 颜色:“红色”, 形状:“正方形”, 尺寸:“大”, itemChild:{ 猫:“类别1”, 年龄:“10” } } 让{ 名称 颜色 形状, 大小, itemChild={}, itemChild:{ cat=“”, 年龄=“” } }=项目; if(itemChild){

我努力想弄明白这一点。在下面的小提琴中,我如何解释itemChild可能不在那里的原因? 当我删除它时,我得到以下错误 (索引):49未捕获类型错误:无法读取未定义的属性“cat”

const项={
名称:“第一项”,
颜色:“红色”,
形状:“正方形”,
尺寸:“大”,
itemChild:{
猫:“类别1”,
年龄:“10”
}
}
让{
名称
颜色
形状,
大小,
itemChild={},
itemChild:{
cat=“”,
年龄=“”
}
}=项目;
if(itemChild){
控制台日志(“儿童”、猫、年龄);
}否则{
console.log(“父项”、名称、颜色);

}
您可以使用默认值

const项={
名称:“第一项”,颜色:“红色”,形状:“方形”,尺寸:“大”,
itemChild:{
猫:“类别1”,
年龄:“10”
}
}
常量func=(对象)=>{
让{
名称、颜色、形状、大小、,
itemChild:{cat=”“,age=”“}={cat:'meow',dog:'bark'}
}=obj;
console.log(名称、颜色、形状、大小、类别、年龄)
}
func(项目)
常量{itemChild,…noItemChild}=item

func(noItemChild)
您需要将嵌套的目标赋值和默认值加入同一属性元素:
itemChild:{cat=”“,age=”“}={}
。您的两个
itemChild
目标是分开的。嘿,谢谢,为什么默认赋值不在元素本身上呢?。。。因此,当itemChild未定义时,它将变成{}?这只是语法:
propertyName:assignmentTarget=defaultValue
。确实如此。如何检查itemChild是否存在(如示例中所示)?仅当itemChild不存在(未定义)时才会指定默认值,因此您可以使用此事实检查itemChild是否存在not@blu10你必须把它分成不同的陈述。当前
itemChild
有一个默认值,因此始终存在。相反,您希望先提取它,而不使用默认值
让{name,color,shape,size,itemChild}=obj
然后检查是否存在
itemChild
。如果您需要提取
itemChild
的属性,您可以稍后执行
让{cat=”“,age=”“}=itemChild
。@3limin4t0r这可能是一个更简洁的方法,谢谢