这里理解不知道对不对

来源: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

同学你好,如下理解是对的:

http://img.mukewang.com/climg/6092012c0931674b09280144.jpg

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

http://img.mukewang.com/climg/609201400900ba7c08050167.jpg

给同学整理一下:

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

http://img.mukewang.com/climg/6092018f09c6a10307320154.jpg

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

祝学习愉快!

0

0 学习 · 15276 问题

查看课程