前端面试常考知识点:this 指向、闭包、Promise、箭头函数
- 前端中this指向问题: 在前端开发中,this关键字指向当前执行上下文的对象。具体指向哪个对象取决于函数的调用方式。常见的情况如下:
- 全局作用域中,this指向window对象。
- 当一个函数作为对象的方法调用时,this指向该对象。
- 使用call、apply或bind方法可以显式地指定this指向。
- 当使用new关键字调用构造函数时,this指向新创建的对象。
- 在事件处理函数中,this指向触发事件的元素。
- 闭包问题: 闭包是指一个函数能够访问其词法作用域之外的变量。简单来说,闭包是由函数以及创建该函数的词法环境组合而成的。闭包的特点包括:
- 函数嵌套函数的形式。
- 内部函数可以访问外部函数的变量。
- 外部函数返回内部函数。
闭包的应用场景包括:
- 封装私有变量和方法。
- 创建函数工厂。
- 实现模块化。
- Promise问题: Promise是一种处理异步操作的机制,用于解决回调地狱问题。它有三种状态:pending(进行中)、fulfilled(已成功)和rejected(已失败)。Promise的特点包括:
- Promise对象是一个代理对象,用于进行异步操作。
- 可以通过链式调用的方式处理多个异步操作。
- 可以通过then和catch方法分别处理成功和失败的回调函数。
- 可以通过Promise.all和Promise.race等方法处理多个Promise对象。
- 箭头函数问题: 箭头函数是ES6引入的一种新的函数定义方式,它具有以下特点:
- 箭头函数没有自己的this值,它继承自外部作用域的this值。
- 箭头函数没有arguments对象,可以通过rest参数获取参数。
- 箭头函数不能作为构造函数使用,不能使用new关键字调用。
- 箭头函数没有原型属性,无法使用原型方法。
箭头函数的优势在于简洁和更直观的this绑定。它适用于需要保留外部this值的情况,例如在回调函数中使用箭头函数可以避免使用bind方法。
原文地址: https://www.cveoy.top/t/topic/pmOR 著作权归作者所有。请勿转载和采集!