
ES6相关面试题
本文最后更新于 2024-09-23,文章内容可能已经过时。
ES6中有哪些新特性
块级作用域let
和 const
let:
声明一个块作用域的局部变量,不允许重复声明
。const:
声明一个块作用域的只读常量
,必须在声明时初始化
。
let
和const
块儿级作用域,仅限制块儿级内声明后访问,在let
声明变量之前访问和赋值会报错!
ES6
明确规定,如果区块中存在let和const命令
,这个区块对这些命令声明的变量,从一开始就形成了封闭作用域
。凡是在声明之前就使用这些变量,就会报错。
总之,在代码块内,使用
let命令声明变量之前,该变量都是不可用的
。这在语法上,称为“暂时性死区
”(temporal dead zone,简称 TDZ)。
解构赋值
允许从数组或对象中提取数据,并赋值给声明的变量。
模板字符串
使用反引号
(```)
定义的字符串,可以嵌入表达式
。
箭头函数
默认参数
如果参数
不传值
,或者是undefind
时,则默认参数生效!
类(class
)
模块(Modules
)
允许使用
import
和export
关键字导入和导出模块。
生成器(Generators
)
生成器函数使用
function*
声明,并使用yield
关键字来暂停
和恢复
执行。
Promise 对象
Promise
是一个代表了异步操作最终完成
或失败的对象
。
Set
和 Map
数据结构
Set
是一个集合,一个唯一且无序的集合列表
!Map
是一个键值对集合
,键可以是任何类型!
扩展运算符
对象子面量增强
允许对象key值可以动态计算以及添加方法!
let
和 var
的区别
let
和var
都是声明变量
的关键字!
let
是块级作用域
,其在访问声明变量之前
,或者块级内部声明变量之外访问
的话都会报错! letvar
是函数作用域
或全局作用域
,其不存在在声明变量之前
或块级内部声明变量访问之外
会报错的问题!
let
之所以报错,是因为es6
标准规定了let
一旦在块级内声明变量,其作用域便会绑定,并会生成暂时性死区
,也就是在声明之前或者块级之外访问便会报错提示!
var
之所以可以访问且不会报错的问题, 是因为var
存在变量提升
,即使在块级内定义变量,在块级之外,依旧可以访问!
let
变量不能重复声明, 而var
变量可重复声明,并且会覆盖前有声明的值!