关于ES6都有哪些新增,经常使用的有哪些,使用心得
- 新增了块级作用域(let,const)
- 新增了基本数据类型(symbol)
- 新增了变量得解构赋值
- 新增了模块化(import/export)
- 新增了Set和map数据结构
- 新增了生成器(Generator)和遍历器(Iterator)
- 函数参数允许设置默认值,引入了rest参数,新增了箭头函数
- 提供了定义类得语法糖class
- 对象和数组新增了扩展运算符
- 数组新增了一些API,如isArray/from/of方法
- 数组实例新增了entries() / keys() / values() 等方法
- ES6原生提供了Proxy构造函数,用来生成Proxy实例
(以下为讲解,部分摘自《ECMAScript 6 入门》阮一峰
https://es6.ruanyifeng.com/?search=%E6%89%A9%E5%B1%95%E8%BF%90%E7%AE%97%E7%AC%A6&x=14&y=4)
1.新增了块级作用域(let,const)
#### let与const以及var的区别
- let 具有块级作用 不能重复声明 可以重复赋值
- const 具有块级作用域 不能重复声明 不能重复赋值
- var 全局作用域 可以重复声明 可以重复赋值
#### 暂时性死区:
- 个人理解:所谓的暂时性死区就是在会计作用域内使用let声明了变量,那么这个变量就不会受外部的影响,这个我把它理解为暂时性死区。
#### 变量提升:
- 个人理解:所谓的变量提升就是为了先事先声明变量,然后在进行赋值
2.新增了基本数据类型(symbol)
定义:Symbol实际上是ES6引入的一种原始数据类型
作用:生成一个独一无二的值
https://blog.csdn.net/gklcsdn/article/details/109196372
3.新增了变量得解构赋值
基本用法*
ES6 允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构(Destructuring)。
以前,为变量赋值,只能直接指定值。
let a = 1;
let b = 2;
let c = 3;
ES6 允许写成下面这样。
let [a, b, c] = [1, 2, 3];
上面代码表示,可以从数组中提取值,按照对应位置,对变量赋值。
本质上,这种写法属于“模式匹配”,只要等号两边的模式相同,左边的变量就会被赋予对应的值。下面是一些使用嵌套数组进行解构的例子。
let [foo, [[bar], baz]] = [1, [[2], 3]];
foo // 1
bar // 2
baz // 3
let [ , , third] = ["foo", "bar", "baz"];
third // "baz"
let [x, , y] = [1, 2, 3];
x // 1
y // 3
let [head, ...tail] = [1, 2, 3, 4];
head // 1
tail // [2, 3, 4]
let [x, y, ...z] = ['a'];
x // "a"
y // undefined
z // []