返回

2020年的JavaScript高频面试题:12道手写题及答案

前端

JavaScript高频面试题

2020年的JavaScript面试题中,有12道题是高频出现的。这些题目包括了JavaScript的基础知识、常见的面试题型,以及一些进阶的问题。

1. 防抖函数和节流函数的区别是什么?

防抖函数在事件被触发n秒后执行回调,如果在这n秒内又被触发,则重新计时。而节流函数在一单位时间内只允许触发一次函数,如果在这个单位时间内触发多次函数,只有一次生效。

2. 事件总线是什么?

事件总线是node中各个模块的基石,它允许不同的模块之间进行通信。事件总线可以用来发布和订阅事件,当某个事件被发布时,所有订阅了这个事件的模块都会被通知。

3. 跨域的解决方案有哪些?

跨域的解决方案有:

  • CORS(跨域资源共享)
  • JSONP(JSON with Padding)
  • WebSocket
  • Server-Sent Events(SSE)

4. 原型链是什么?

原型链是JavaScript中的一种继承机制。每个对象都有一个原型对象,原型对象也有一个原型对象,依此类推,直到原型对象为null。当一个对象访问一个不存在的属性时,JavaScript会沿着原型链向上查找,直到找到该属性为止。

5. 闭包是什么?

闭包是一个可以在其父作用域之外访问父作用域变量的函数。闭包可以用来实现一些特殊的功能,比如私有变量和延迟执行。

6. 作用域是什么?

作用域是指变量的可见范围。作用域分为全局作用域和局部作用域。全局作用域是指在整个程序中都可以访问的变量,而局部作用域是指只能在某个函数或块中访问的变量。

7. this是什么?

this是JavaScript中的一个,它指向当前正在执行的函数所属的对象。this的值可以在函数内部通过this关键字访问。

8. 原型继承是什么?

原型继承是JavaScript中的一种继承机制。子对象通过原型链继承父对象的方法和属性。原型继承可以用来实现代码的重用和扩展。

9. 如何在JavaScript中实现深拷贝?

深拷贝是指将一个对象的所有属性和子属性都复制到另一个对象中。深拷贝可以用来避免浅拷贝带来的问题,比如修改子对象会影响到父对象。

10. 如何在JavaScript中实现事件代理?

事件代理是一种设计模式,它允许我们使用一个事件监听器来监听多个元素的事件。事件代理可以用来提高代码的性能和可维护性。

11. 如何在JavaScript中实现函数柯里化?

函数柯里化是一种设计模式,它允许我们将一个多参数函数转换成一个单参数函数。函数柯里化可以用来提高代码的可读性和可重用性。

12. 如何在JavaScript中实现函数组合?

函数组合是一种设计模式,它允许我们将多个函数组合成一个新的函数。函数组合可以用来提高代码的可读性和可重用性。