分享几道面试遇到的问题(一)

165 阅读2分钟

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保存字符串的值,该字符串不是函数,因此无法调用。当值不是预期类型时,会抛出TypeErrorsJavaScript 期望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传递给superLabrador 类接收两个参数,那么参数是由于它继承了Dogsize 作为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]。