一、什么是ES6?
ES全称为ECMAScript,它是由国际标准化组织ECMA(全称:European Computer Manufacturers Association)欧洲计算机制造商协会制定的一项脚本语言的标准化规范。JavaScript就实现了这套标准。ES6中的6代表的是版本,从2015年6月份发布的版本及其后续版本统称为ES6,从2015年开始,每年的6月份都会发布新版本。目前各大浏览器产商也都已经支持ES6。
二、 ES6的新特性有哪些?
1.新增了块级作用域(let,const)
2.提供了定义类的语法糖(class)
3.新增了一种基本数据类型(Symbol)
4.新增了变量的解构赋值
5.函数参数允许设置默认值,引入了rest参数,新增了箭头函数。
6.数组新增了一些API,如isArray / from / of 方法;数组实例新增了 entries(),keys() 和 values() 等方法。
7.对象和数组新增了扩展运算符
8.ES6新增了模块化(import / export)
9.ES6新增了Set和Map数据结构。
10.ES6原生提供Proxy构造函数,用来生成Proxy实例
11.ES6新增了生成器(Generator)和遍历器(Iterator)
说说解构赋值
解构:分解数据结构。
赋值:为变量赋值。
解构赋值:从数组或者对象中提取值,按照对应的位置,对变量赋值(在数组解构中,只 要解构的目标可以遍历,就可以实现解构赋值)。
1:数组解构赋值的特点:
在数组解构中,左边用中括号包裹任意个变量,右边则是一个真实的数组,按照 一 一 对应的关系进行赋值,在赋值过程中有以下几种情况:
1.1:声明的变量数量与数组的元素数量一致:
1.2:声明的变量的数量大于数组的元素的数量:
1.3:声明的变量的数量小于数组的元素的数量:
1.4:使用剩余运算符进行解构赋值:
1.5:可遍历对象 例如:字符串:
var、let、const各自的特点及其区别
在ES6之前只有全局作用域和局部作用域,ES6新增了块级作用域let和const,下面将简单介绍var、let和const的特点以及区别。
块级作用域:只能在声明的区域(代码块)中使用,不能在声明的区域的外部使用,否则报(xxx is not defined)。
var:使用var声明的变量,其作用域为该变量所在的函数内,且存在变量提升现象(变量提升:可以先使用再声明),不会受到块级作用域的影响
let:ES6新增的块级作用域
1:使用let声明的变量具有块级作用域:,只能在当前声明的代码块中使用,必须要先声明再使用
2:具有暂时性死区特性。
const:ES6中新增的常量(常量:值(内存地址)不可更改的量)。特点如下:
3.1:具有块级作用域的特点,只能在当前声明的代码块中使用,必须要先声明再使用。
3.2:声明常量时必须赋值,如果不赋值报错:Missing initializer in const declaration(在const声明中未初始化)。
3.3:const声明的常量不可更改。
3.4:使用const声明的常量如果是基本数据类型(比如:数字、字符串),一旦赋值,值不可以更改;如果是引用数据类型(数组,对象),不能重新赋值,但是可以更改数据结构内部的值(比如修改对象中的属性)。
谈谈我对箭头函数的理解
1:箭头函数:ES6新增的定义函数的方式。
2:作用:用来简化函数定义的语法。
3:箭头函数的特点:
3.1:可以将箭头函数赋值给一个变量,变量名字就是函数的名字,通过变量名字调用函数。
3.2:如果函数体中只有一行代码,且代码的执行结果就是返回值,可以省略大括号。
3.3:如果形参只有一个,可以省略小括号(如果没有形参,小括号不能省略)。
Map数据结构
1:Map:类似于对象,是一个存储键值对的集合,但是‘键’’的范围不仅仅是字符串,所有类型的值包括对象都可以当做键。
2:创建Map集合:
2.1:创建Map集合有两种:1.直接new Map()创建实例对象;2.接收一个数组作为参数来创建实例对象(该数组的成员必须是一个个表示键值对的数组)。
3:Map集合常用属性和方法:
3.1:.has(key);查找key,返回布尔值。
3.2:.get(key) 根据key查找value。
3.3:.set(key,value) 添加键值对。
3.4:.size获取存储的数量。
总结
1:var声明的变量是函数变量(全局变量和局部变量),会有变量提升的风险,可以先使用再声明,尽量少用。
2:let声明的变量具有块级作用域的特性,即只能在声明的代码块中使用,只能先声明之后才能使用。
3:const声明的变量是常量,常量的值不允许更改,如果常量是引用类型(对象或者数组),那么可以更改常量内部属性的值。
4:解构就是分解数据结构,赋值就是为变量赋值;在ES6中允许从对象和数组以及任何可以遍历的数据类型进行解构赋值。
5:箭头函数是将函数简化定义的一种方式,将箭头函数赋值给一个变量,变量名就是函数名称,通过调用变量名来调用函数。
6:Set数据结构的声明方式分为两种:1、直接实例化一个空的Set()构造函数;2、在Set构造函数中传入一个数组。Set构造函数可以用来做数组去重等操作。
7:Map数据结构的声明方式分为两种:1、直接实例化一个空的Map()构造函数;2、在Map构造函数中传入一个带有键值对的数组。