1. console.log(${(x=>x)('I love ')} to program)
A、 I love to program
B、undefined to program
C、${(x=>x)('I love ')} to program
D、 TypeError
2. const name = 'Livall' console.log(name())
A、 SyntaxError
B、 ReferenceError
C、 TypeError
D、 undefined
3. const colorConfig = {
red:true,
blue:false,
green:true,
black:true,
yellow:false
}
const colors = ['pink','red','blue']
console.log(colorConfig.colors[1])
A、 true
B、 false
C、 undefined
D、 TypeError
4.使用那个构造函数可以成功继承Dog类
class Dog {
constructor(name){
this.name = name;
}
};
class Labrador extends Dog {
//1
constructor (name,size){
this.size = size;
}
//2
constructor(name,size){
super(name);
this.size = size;
}
//3
constructor(size){
super(name);
this.size = size;
}
//4
constructor(){
this.name = name;
this.size = size;
}
}
A、 1
B、 2
C、 3
D、 4
5.console.log([[0,1],[2,3]].reduce(`
(acc,cur) =>{
return acc.concat(cur);
},[1,2])
)
A、 [0,1,2,3,1,2]
B、 [6,1,2]
C、 [1,2,0,1,2,3]
D、 [1,2,6]
参考答案
1.带有模版字面量的表达式首先被执行。相当于字符串会包含表达式,这个立即执行函数(x=>x)('I love')返回的值,我们向箭头函数 x=>x 传递"I love”作为参数。x等价于返回的"I love " ,结果就是"I love to program"
2.变量name保存字符串的值,该字符串不是函数,因此无法调用。当值不是预期类型时,会抛出TypeErrors。JavaScript 期望name是一个函数,因为我们试图调用它。但它是一个字符串,因此抛出TypeError:name is not a function
3.JavaScript 尝试在colorConfig 对象上找到名为colors的属性,找不到名为“colors” 的属性,因此返回“undefined” ,然后,尝试使用[1]访问第一个元素的值,我们无法对为定义的值执行此操作,因此会抛出“can not read property '1' of undefined”
4.在子类中,在调用super 之前不能访问到this关键字,如果这样做,它将会抛出一个ReferenceError:"``1" 和"4" 将会引发一个引用错误。使用super 关键字,需要用给定的参数来调用父类的构造函数,父类的构造函数接收name 参数,因此我们需要将name传递给super。Labrador 类接收两个参数,那么参数是由于它继承了Dog,size 作为Labrador l类的额外属性,它们都需要传递给Labrador的构造函数,因此使用构造函数2正确完成。
5.[1,2]是初始值,是开始执行reduce 函数的初始值,以及第一个acc的值,在第一轮中,acc是[1,2],cur 是[0,1] ,连起来的结果是[1,2,0,1] 。然后acc的值是[1,2,0,1],cur的值为[2,3],连起来就得到[1,2,0,1,2,3]。