ES6
let
、const
和var
的区别
- let和const声明变量不存在变量提升
- let和const不能重复声明变量,如果重复声明会报错
- 用let和const在全局声明变量不会给window增加属性
- let和const出现在代码块中,会把代码块(字面量声明对象除外)变成块级作用域,并且出现暂时性死区
class类
ES6提供了更接近传统语言的写法,引入了Class(类)这个概念,作为对象的模板。通过class关键字,可以定义类。基本上,ES6的class可以看作只是一个语法糖,它的绝大部分功能,ES5都可以做到,新的class写法只是让对象原型的写法更加清晰、更像面向对象编程的语法而已
import
和export
为了实现在运行中加载模块,引入了import()
函数,实现了动态加载。
import('./myModule.js')
.then(({export1, export2}) => {
// ...
});
- import()和import主要区别为前者是动态加载。
- import()返回一个Promise对象,import()加载模块成功以后,这个模块会作为一个对象,当作then方法的参数。
- import()类似于Node的require方法,区别主要是前者是异步加载,后者是同步加载
- import()通常用于按需加载、条件加载、动态的模块路径
new set
数组去重
var arr = [1,2,3,3,1,4];
[...new Set(arr)]; // [1, 2, 3, 4]
Symbol
Symbol()
返回的symbol值都是唯一的。一个symbol值能作为对象属性的标识符;这是该数据类型仅有的目的。
模板字符串
展开运算符和剩余运算符
- 展开运算符用三个点号表示,功能是把数组或类数组对象展开成一系列用逗号隔开的值,即打散操作:
数组传参、合并数组、合并对象等等 - 剩余运算符也是三个点号,不过其功能与扩展运算符恰好相反,把逗号隔开的值序列组合成一个数组,是展开运算符的反向操作,即打包操作:
函数设参(不确定参数的时候)、
for of
-
for of
适用遍历数/数组对象/字符串/map/set等拥有迭代器对象的集合.但是不能遍历对象,因为没有迭代器对象.与forEach()
不同的是,它可以正确响应break、
、continue
和return
语句
数组 fla、find、findIndex
let ary = [1, [2, [3, [4, 5]]], 6];// -> [1, 2, 3, 4, 5, 6]
ary = ary.flat(Infinity);
对象
Object.assign()
Object.values()
Object.keys()
Object.create()
网友评论