# 1.下列通过解构赋值,无法获取到对应值的选项是?(选择一项)
参考解析:
本题主要考查数组解构赋值。
数组解构赋值遵守模式匹配,即:等号两边的模式相同。
等号左边是数组,等号右边也必须是数组。B选项左边是对象,无法进行解构,所以本题答案为B.
# 2.下面这段代码运行结果是?(选择一项)
**A.**2
B."b"
**C.**undefined
**D.**报错
参考解析:
本题主要考察数组解构赋值的默认值。
只有数组中为undefined的时候,才可以取默认值,但是本题代码中,arr=[1,2,3,4],b对应的值并不是undefined,因此会取到与b对应的2,所以本题答案为A.
# 3.下图所示代码,输出的结果是?(选择一项)

**A.**7
**B.**5
**C.**1
**D.**NaN
本题主要考查数组解构的默认值。
数组解构时,匹配结果严格等于undefined时,默认值才会生效。
本题代码中,调用fn传入的参数1和null都不严格等于undefined,所以a、b的默认值都没有生效,a的匹配结果是1,b的匹配结果是null。
null在参与运算时,默认会转换成数值0,a+b的最终结果为1,所以本题答案为C.
# 4.下面代码书写正确的选项是?(选择两项)
本题主要考查箭头函数和数组解构赋值的综合运用。
调用函数没有传入数组时,a = b这句代码,使用b作为默认值时,b还没有声明,会出现报错,A选项错误。但是先声明b,然后将b作为a的默认值,是符合语法的,B选项正确。
函数参数的解构赋值相当于[b = 1, a = b] = arr,是一句表达式,不属于单个参数,箭头函数的()不可以省略,C选项错误。
单行函数体时,可以省略花括号,D选项正确。
所以本题答案为BD.
# 5.根据如下代码,下列哪一项是错误的?(选择一项)
**A.**foo输出的值是aaa
**B.**bar输出的值是bbb
**C.**baz输出的值是undefined
**D.**baz输出的值是bbb
本题主要考察对象的解构赋值。
对象的解构赋值中,与顺序无关,需要注意的是,变量名与属性名必须一致。
本题代码中foo解构后对应的值为aaa,bar解构后对应的值为bbb,baz解构后对应的值为undefined,所以D选项说法是错误的,本题答案为D.
# 6.关于如下代码下列说法正确的是?(选择一项)
**A.**console.log(foo)得到aaa
**B.**console.log(baz)得到aaa
**C.**console.log(baz)得到bbb
**D.**console.log(bar)得到bbb
本题代码主要考察对象解构赋值。
对象的解构赋值的内部机制,是先找到同名属性,然后再赋给对应的变量。
本题代码中,真正被赋值的是变量baz,而不是模式foo,真正被赋值的是后者,而不是前者。所以本题答案为B.
# 7.以下哪一个选项的代码,可以使arr数组中的元素保持不变?(选择一项)
**A.**const obj = {}
**B.**const obj = {arr: arr}
**C.**const obj = {test: arr}
**D.**const obj = {test: undefined}
本题主要考查解构赋值的默认值是表达式时,遵循惰性求职的原则。
惰性求值指的是只有用到时,才会去求值,所以当test使用默认值,就会执行arr.pop(),删除数组最后一项元素,改变arr的值。
obj为空对象,对象解构时test使用默认值,A选项错误。
obj对象中test属性值为arr数组,可以正常解构,不会使用默认值d,B选项错误。
obj对象中没有test属性,对象解构时test使用默认值, C选项正确。
obj对象中test属性为undefined,对象解构时test使用默认值,D选项错误。
所以本题答案为C。
# 8.关于对象解构的自定默认值生效的条件是?(选择一项)
**A.**只要设置默认值就可以生效
**B.**只有匹配到undefined的时候才会使用默认值
**C.**只有匹配到null的时候才会使用默认值
**D.**在匹配到null或者匹配到undefined的时候会使用默认值
本题主要考察对象解构赋值的默认值,
对象解构中,只有匹配到undefined的时候会使用默认值,所以本题答案为B.
# 9.下列选项中,对已声明变量进行对象的解构赋值正确的是?(选择一项)
本题主要考察对已声明变量进行对象的解构赋值。
先声明变量,然后在进行解构赋值,整个解构必须使用圆括号包裹起来,否则会报错,因为解析器会将起首的大括号,理解成一个代码块,而不是赋值语句,A选项正确,BD选项错误。
const 声明的是常量,不能先声明后赋值,C选项错误。
所以本题答案为A.
# 10.关于对象解构赋值与数组的解构赋值,下列说法错误的是?(选择一项)
**A.**数组的解构赋值中,给对应位置的变量声明对应位置的值,变量的取值由位置决定
**B.**变量名与属性名一一对应,次序不重要
**C.**对象的解构赋值中,变量名必须与属性名不一致时,会是undefined
**D.**对象解构赋值与数组的解构赋值,都是要由次序有关
本题主要考察对象和数组的解构赋值。
对象的解构赋值中,与顺序无关,需要注意的是,变量名与属性名必须一致,D选项描述错误**,所以本题答案为D.**















