不管是校招仍是社招,若是你恰巧被问及这个问题,那么请你尽量的多说一点,这样面试官才会认为你是真正的掌握了ES6,ES6的内容不少,这里只罗列了经常使用的特性及其要点,在面试的时候还须要围绕这些点根据本身的理解尽量的展开。最后本文只适用于面试回答,不适合用来学习ES6,若是你想更全面的的了解ES6,能够阅读阮老师的ES6入门es6
1. let和const命令的出现
- let和const区别:const定义一个只读常量,一旦声明变量,就必须当即初始化,不能留到之后赋值且不可改变。
- 不存在变量提高,声明的变量必定要在声明后使用,不然报错
- 不容许重复声明变量,不容许在相同做用域内,重复声明同一个变量
- 块级做用域,ES6以前只有函数做用域与全局做用域,一个大括号即一个块级做用域
- 声明的变量不在属于window
2. 解构赋值
- 数组、对象、字符串等解构赋值的基本用法及默认值的设置
- 解构的用途
(1) 交换变量的值
(2) 接收函数返回的多个值
(3) 函数参数默认值的设置 (4) 用于模块导入的按需加载
3. 字符串的扩展
- 模版字符串
- 方法的增添
includes()
,startsWith()
,endsWith()
.....
- 正则表达式的具名组匹配
4. 数值的扩展
- 完善二进制(0b开头)与八进制(0o开头)的表示
- 方法的移植与增长 将
parseInt()
和parseFloat()
从window
对象移植到Number
对象上
- 指数运算符**
5. 函数的扩展
- 函数参数默认值的设置
- 箭头函数
使用箭头函数的注意事项:
(1)函数体内的this
对象,就是定义时所在的对象,而不是使用时所在的对象
(2)不能够看成构造函数,也就是说,不可使用new
命令,不然会抛出一个错误
(3)不可使用arguments对象,该对象在函数体内不存在。若是要用,能够用 rest 参数代替
- rest参数
6. 数组的扩展
- 扩展运算符
用途
(1)复制数组
(2)合并数组
(3)函数的rest参数
- 方法的扩展
Array.from()
、Array.of()
实例上的方法fill()
、flat()
7. 对象的扩展
- 属性以及方法的简洁表示
- 属性名表达式
- 可遍历性
for..in
、Object.key(obj)
- super关键字的增长
- 新增方法
Object.is()
、Object.assign()
8. Module导入模块
讲到这一点就颇有必要给面试官讲一下ES6模块与CommoonJS模块的差别面试
- CommonJS 模块输出的是一个值的拷贝,ES6 模块输出的是值的引用。
- CommonJS 模块是运行时加载,ES6 模块是编译时输出接口。 若是你不是很清楚能够阅读这篇文章
9. 其余方面
- promise与async的运用和理解,说起这里他接下来可能会问promise的实现,这也是一道常考题
- Symbol数据类型
- set和map结构
- class
最后但愿你面试成功,越努力越幸运,加油正则表达式