你必须知道的ES6

1.基本介绍

  1)es6的全称是:ECMAScript6.0,ECMAScript 6.0(如下简称 ES6)是 JavaScript 语言的下一代标准,于2015年6月正式发布。目标“使得 JavaScript 语言能够用来编写复杂的大型应用程序,成为企业级开发语言”前端

  2)为何要学习ES6 es6的出现,给前端开发人员带来了新的惊喜,它包含了一些很棒的新特性,能够更加方便的实现不少复杂的操做,提升开发人员的效率。流行的js框架都使用了大量的es6语法。es6

2.加入了let和const

1).let

let与var同样都是用于定义变量。数组

区别框架

  • 块级做用域(第三种做用域)。let所声明的变量,只在let命令所在的代码块内有效。
  • let没有“变量提高”现象。
  • 不会成为window对象的属性
  • 暂时性死区(TDZ)

1.块级做用域

在此以前是没有块级做用域的,只能经过function来划分做用域。在es6中经过let关键字实现了块级做用域。函数

上面的代码中,let 定义的变量只在{ }范围内有效,出了{ }就无效了。

2.let定义的变量不会提高

3.不会成为window对象的属性

4.暂时性死区(TDZ)

ES6明确规定,若是区块中存在let和const命令,这个区块对这些命令声明的变量,从一开始就造成了封闭做用域。凡是在声明以前就使用这些变量,就会报错。这在语法上,称为“暂时性死区”(temporal dead zone,简称 TDZ),就是要先定义变量,再使用。学习

2).const

1.const:声明常量,值不能改变。

2.必须当即初始化

3.解构赋值

1)什么是解构赋值

ES6 容许按照必定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构(Destructuring)。this

  • 做用:是对变量进行赋值。
  • 变量的值的来源:是数组或者对象
  • 规则:有必定的模式

2)数组的解构赋值

按下标一一对应地去赋值 : spa

左右数量不等:
跳过部分 :
默认值:
嵌套:

3)对象的解构赋值

1,按属性名的一一对应关系来进行赋值

2,将现有对象的属性,赋值到某个变量

只要数据实现迭代器接口就能够用解构赋值。包括:数组、对象、字符串

4.数组扩展

1,Array.isArray()判断是不是一个数组: Array.isArray(arr) //ture或者false3d

2,forEach()对数组进行循环。rest

数组.foreach( function(item,index ,arr){
        // item : 当前的数组元素,至关于arr[index]	  
        // index:数组元素的索引
        // arr 当前的数组
        } );
复制代码

item,index,arr只是形参名,能够本身定义。

3,map()映射:逐一处理原数组元素,返回到一个新数组

4,filter()逐一过滤原数组元素,留下符合条件的元素获得一个新数组。

5,reduce()不断地将前一项和后一项的值进行运算(具体规则是由回调函数决定的,每次的运算会涉及两项),把前一轮运算的结果做为当前运算的前一项。返回最后结果。

数组元素是对象的例子:

6,some()只要数组中的某一个元素符合指定的条件,就会返回真,不然返回假。

7,every()若是数组中的全部元素都符合指定的条件,才返回true,不然返回false。只要有一个知足,则总体的结果就是false。

8,Array.from()是Array构造器的静态方法,将类数组对象转成真正的数组,以arguments为例

9,Array.of()将一组值转换为数组,与Array.from功能类似,能够理解用来建立数组。

5.函数扩展

1,ES6以后能够设置参数默认值

因为参数变量是默认声明的,因此不能用let或const再次声明 2,rest参数

注意:

  • f中有两个变量,a,rest
  • rest是一个数组
  • rest只是一个变量名,它是能够本身定义的
  • 最后一个必须是形参
  • rest取代了arguments对象

3,调用函数时…和定义函数时…是不同的

上面的代码中,…是拓展运算符,是用来把一个数组“打散”

上面在定义函数时使用的…称为rest运算符,它的功能是把零散的参数列表打包成一个数组。

箭头函数

1,做用 :简化函数的定义,让咱们写函数时更加的方便,快捷。

这里把function省略了,用=>来代替。

只有一个参数可省掉():let f=x=>{return x*x}
        若有多个形参,或者没有形参,则()不能少
        若是只有一句函数体(非return),则能够不写{}:let f=x=>console.log(x*x)
        若是只有一句函数体,并它是return语句 ,则return也能够省,{}也能够省:let f=x=>x*x
复制代码

2,箭头函数的一些特性

  • 不能够使用new命令,不然会出错误,以下:

  • arguments在函数体内不存在:

  • 若是要用实参列表,能够用 rest 参数代替:

  • 箭头函数没有本身的this:

能够看到上面的箭头函数由obj所调用,可是this并无指向obj。因此箭头函数是没有this的。

下一篇将浅析this。