这里理解不知道对不对
来源:3-5 选择练习
qq_Unique彼岸花丶花海_0
2021-05-04 12:02:43
let arr=[1,2,3];
let obj={test:arr}; //obj对象中test属性值为arr数组,可以正常解构,不会使用默认值
let obj={arr:arr};obj对象中没有test属性,对象解构时test使用默认值
let {test = arr.pop()}=obj;
这道题我这样理解对么 如果 let obj={arr:arr};没有test 到 let {test = arr.pop()}=obj;时 test 是空所以是要执行 let {test = arr.pop()}=obj;
let obj={test:arr}; test有值 test 就是[1,2,3] 所以不用执行
1回答
好帮手慕久久
2021-05-05
同学你好,如下理解是对的:

如下理解老师不是特别理解:

给同学整理一下:
如果obj中没有test属性,或者test属性的值是undefined,那么解构test时,就会使用test的默认值,即会执行arr.pop():

而arr.pop会改变数组arr,所以如果不想改变arr,则不能让test使用默认值,那么obj中,就需要有test属性,并且值不是undefined,因此A、B、D是错的。
祝学习愉快!
相似问题