【面试题】ES6+语法
1. ES6新加了哪些特性
- var、let、const
- 新增数组方法(entries,keys,values,find,fill等)
- 对象属性的简写
- 解构赋值
- rest/剩余参数
- 类型语法
- 模板字符串
- 异步语法promise
- map/set
- 模块化
2. 模板字符串与普通字符串的区别
- 多行字符串必须使用/n,模板字符串保留原格式
- 引用变量要+拼接,模板字符串则使用${}嵌入
3. 箭头函数与普通函数区别(箭头函数特点)
- 没有prototype,不能作为构造函数
- 没有this(this指向外部this),this指向也不能被修改
- 没有arguments参数
与普通函数还体现在语法上的差异
4. var、let、const的区别
var | let | const | |
---|---|---|---|
添加全局属性 | ✅ | ||
允许重复声明 | ✅ | ||
变量提升 | ✅ | ||
暂时性死区 | ✅ | ✅ | |
块级作用域 | ✅ | ✅ | |
不允许修改 | ✅ | ||
必须设初值 | ✅ |
5. Symbol与BigInt的使用
6. Object、Map的区别
- key的类型:Map的key可以是任意值。Object的key只能是String,Number或者Symbol。
- 有序性:Map属性排序是push的顺序。Object的属性排序会按照key字符排序。
- 可迭代:Map可以使用for...of遍历,可使用...展开。Object不行
- 长度:Map可以直接拿到长度。Object不行。
- 操作元素的方式不同:
map.set(key, value)
,obj.a
/obj[a]
- Map是Object的实例对象。
7. Array、Set区别
- 存储空间:Set是不连续的存储空间,Array是连续的存储空间
- 唯一性:Set中元素不能重复,Array可以重复
8. Map与WeakMap、Set与WeakSet的区别
- WeakMap优点:
- 拥有和Map相同API
- 不影响垃圾回收
- WeakMap缺点:
- key必须是引用类型,不能是原始值
- 因为数据可能会被回收,所以不能遍历,也不能知道大小
- 场景:
- 当key都是引用类型,且不需要遍历数据时
WeakSet与之类似的道理