ES6、7面试题
作者:互联网
let、const、var的区别?
- let 和 const声明的变量不会出现提升,var声明的变量会出现提升(另外一种说法:let变量也会提升,只不过因为暂时性的限制,不能再let声明变量之前使用)
- let 和 const是块级作用域,var是函数级作用域
- let 和 const不允许重复声明(会抛出错误)
- let 和 const声明变量之前使用,会抛出错误(暂时性死区)
- const 声明一个只读的常量,一旦声明,不可以改变
Promise是什么?
定义:
Promise
是异步编程的一种解决方案
Promise
本身是同步立即执行函数,.then 是异步的
特点:
- 对象的状态不受外界影响
- 一旦状态改变就不会再变
三个状态:
pending
(等待)、fulfilled
(成功)、rejected
(失败)
两个过程:
resolve
函数被执行时,会从pending
变成 fulfilled
成功
rejecte
函数被执行时,会从pending
变成 rejected
失败
Promise的静态方法?
Promise.resolve()
Promise.reject()
Promise.all([promise1, promise2, promise3])
是在所有promise都完成后执行。可以用于处理一些并发的任务
async / await 是什么?
从内部实现来说其实就是Generator的语法糖,基于Promise,并于所有现存的基于Promise的API兼容
async关键字
- async 关键字用于声明一个异步函数(如 async function test(){...})
- async 会自动将常规函数转换成Promise,返回值也是一个Promise对象
await 关键字
- await 用于等待异步功能执行完毕 (如 let res = await test())
- await 只能再 async 函数内部使用
- await 只能用与Promise 一起调用,await放置在Promise调用之前,会强制async函数中其他异步代码等待,直到Promise完成并返回结果
相较于Promise,async / await有何优势?
- 代码清晰,提升了代码的阅读体验 (promise虽然摆脱了回调地狱,但then链式调用的阅读负担还是存在的)
- 可以使用try / catch 进行错误处理(async / await 可以用成熟的try / catch做处理)
- 调式时的阅读性,也相对更友好(调用多个Promise,Promise链中某个地方抛出错误,不会给出错误发生的位置,不能在.then代码块中设置断点)
缺点:try..catch内部的变量无法传递给下一个try...catch
箭头函数和普通函数的区别?
- 箭头函数作为匿名函数,不能使用
new
关键字 - 箭头函数不绑定
this
,会捕获上下文this
,作为自己的this
值,任何方法都改变不了this
指向,(call(),bind(),apply()) - 箭头函数不绑定arguments,用rest参数替代
普通函数:可以使用arguments,也可以使用rest
function showArgs(a,b,c){ console.log(arguments[2]) // 3 } showArgs(1,2,3)
箭头函数:不绑定arguments,es6引入rest参数(形式为...变量名
)
let showArgs = (...args) => { console.log(args) } showArgs(1,2,3,4,5)
exports, module.exports, export defaul 区别?
-
exports:导出的是模块函数本身,可以有多个
exports.func = function () {}
引入(需要加括号):
import {func} from './test'
-
module.exports:导出的是模块对象本身,当文件中出现多个,后面的module.exports会覆盖以前的
module.exports = { func: function () {} }
引入(可加可不加,不加就是引入模块对象本身):
import module from './test'
-
export default:只能有一个
export default function func() {console.log(1)}
引入(不用加括号):
import func from './test'
标签:ES6,面试题,函数,await,exports,let,async,Promise 来源: https://www.cnblogs.com/naturl/p/16263370.html