ECMAScript 6.0(以下简称ES6)是JavaScript语言的下一代标准,已经在2015年6月正式发布了。它的目标,是使得JavaScript语言可以用来编写复杂的大型应用程序,成为企业级开发语言。
ES6新增添很多功能。更加方便我们的使用功能,话不多少。进入主题。
一、关于变量
ES5
1.只有全局作用域变量和函数作用域变量
2.“变量提升”(当程序进入一个新的函数时,会将该函数中所有的变量的声明放在函数开始的位置。仅仅会提升变量的声明,不会提升变量的赋值)
ES6新增:块级作用域变量
1、let定义块级作用域变量
|
|
2、const 定义只读变量
1、const声明变量的同时必须赋值,const声明的变量必须初始化,一旦初始化完毕就不允许修改
2、const声明变量也是一个块级作用域变量
3、const声明的变量没有“变量的提升”,必须先声明后使用
4、const声明的变量不能与前面的let, var , const声明的变量重名
|
|
二、关于函数
ES6可以给形参函数设置默认值
就是说,当我们调用函数时,如果设置了默认形参,即使没给函数传入实参,那么函数的实参就是默认形参。
|
|
箭头函数
|
|
比如我们用箭头函数计算一个1到100的和
|
|
1.在函数体外,this指的就是window对象
2.在函数替内,谁调用函数this就指向谁
3.在构造函数中,this指的是新创建的对象
4.在html标签中,this指的是当前的这个标签元素
5.在ES6中,对于箭头函数,要看它在哪里创建的,和当前函数的作用域。
三、关于数组的展开运算
在数组之前加上三个点(…)
|
|
四、关于apply和call
apply和call,都是对象本身没有某个属性或者方法,去引用其他对象的属性或方法,也就是说两者都可以改变this的属性
不同之处
apply(this的指向,数组/arguments)
call(this的指向,参数1,参数2,参数3)
|
|
五、关于解构赋值
数组的解构赋值
|
|
对象的解构赋值
|
|
以前我们互换两个变量的值,需要借助第三个变量,利用解构赋值,就方便很多了
|
|
解构json
|
|
六、string中加入include方法
includes(“字符”); 用于判断字符串中是否包含某个字符
存在返回true 不存在返回false
includes(“字符”,startIndex); 用于判断字符串中下标startIndex是否是某个字符
是返回true 不是返回false
|
|
七、创建对象
ES5中创建对象的几种方法
1.字面量法
2.工厂模式
3.构造函数
4.组合方式 构造函数+原型模式
ES6中创建对象
class 类名{
//肯定存在一个构造函数
//如果不写构造函数,有一个默认的构造函数,内容为空
constructor(){} //注意:这里不需要逗号
//下面是函数属性 比如属性有run dark
run(){}
dark(){}
}
举个例子
|
|
八、继承
|
|
九、Set()和Map()
set()有序列表集合(没有重复)
Set()是指有序列表集合 (set中的元素是没有重复的)
set包含的方法
add()、has()、delete()、clear()等
add()添加
|
|
has( value )用来判断指定的值是否在set集合中
存在返回true 不存在返回false
//结合上栗
console.log( s.has(1) )//true
clear() 同来清空set集合的
//结合上栗
s.clear()
console.log(s)//此时为空
举个例子:生成10个1-20的随机数,要求不可以重复
|
|
Map() 用来存放键值对的集合 key/value
|
|
has() 判断是否存在某个键值对
存在返回true 不存在返回fasle
|
|