ES6常见面试题(持续更新中)

169 阅读2分钟

1、新增的声明命令let和const

在 es6 中通常用 letconst 来声明,let 表示变量、const 表示常量。
(1letconst 都是块级作用域。以{}代码块作为作用域范围 只能在代码块里面使用。
(2)不存在变量提升,只能先声明再使用,否则会报错。在代码块内,在声明变量之前,该变量都是不可用的。
     这在语法上,称为“暂时性死区”(temporal dead zone,简称 TDZ)。
(3)在同一个代码块内,不允许重复声明。
(4const 声明的是一个只读常量,在声明时就需要赋值。(如果 const 的是一个对象,对象所包含的值
     是可以被修改的。抽象一点儿说,就是对象所指向的地址不能改变,而变量成员是可以修改的。)

2、箭头函数和普通函数的区别

1)箭头函数是匿名函数,不能作为构造函数,不能使用new2)箭头函数不绑定arguments,取而代之用rest参数...解决
(3this的作用域不同,箭头函数不绑定this,会捕获其所在的上下文的this值,作为自己的this值
(4)箭头函数没有原形属性
(5)箭头函数不能当作Generator函数,不能使用yield关键字

3、解构赋值

ES6 允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构(Destructuring)。
(1)数组的解构赋值数组中的值会自动被解析到对应接收该值的变量中,数组的解构赋值要一一对应,
     如果有对应不上的就是 undefined2)对象的解构赋值对象的解构与数组有一个重要的不同。数组的元素是按次序排列的,变量的取值 
     由它的位置决定;而对象的属性没有次序,变量必须与属性同名,才能取到正确的 值。

4、Promise 对象

1)Promise 是异步编程的一种解决方案,将异步操作以同步操作的流程表达出来,避免了层层嵌套的回调函数。
(2)它有三种状态,分别是 pending-进行中、resolved-已完成、rejected-已失败。 
(3)Promise 构造函数包含一个参数和一个带有 resolve(解析)和 reject(拒绝)两个参数的回调。
     在回调中执行一些操作(例如异步),如果一切都正常,则调用 resolve,否则调用 reject。对于已经
     实例化过的 promise 对象可以调用 promise.then() 方法,传递 resolve 和 reject方法作为回调。
     then()方法接收两个参数:onResolve和onReject,分别代表当前promise对象在成功或失败时。