ES6

严格模式  
在程序或函数的开头处 加一个 “use strict”
严格模式下的要求 :
    1、变量必须用var定义
    2、八进制被禁用
    3、函数必须声明在程序的最顶端
 
1、let 关键字      块级作用域 
特点
   1、let 声明变量 通过let方式声明的变量  变量声明之前该变量不可用  这种现象就称作 暂时性死区  
   2、let 不允许重复声明变量 在函数体内部  不能通过let方式声明和形参相同的变量     
   3、let 必须在某个代码块{  }内部使用,输出也要在代码块内部 
   4、let 必须先定义在使用  在函数体的内部 不能实现 变量提升    
      5、let  循环时,变量输出的是最后一次循环结束时的数值   
                   给的时数值,而不是变量,且只能在循环体内使用
                    循环结束后,变量失效不起作用;
let 应用 :  获取下标(选项卡)
 
2、this 指向改变
this含义--当前对象  : 指事件的调用者 或  方法的调用者  
改变匿名函数的this指向 : 
   1、改变匿名函数的指向 
        function(){}.bind(this要指向的对象)      
   2、改变非匿名函数的指向
        function fn(){}
            fn.apply(函数体内部this指向对象) 或 call(函数体内部this要指向对象)
            即函数名.apply(  )
 
3、for...of  
for...of  
    遍历值,不能遍历json
for ... in
    遍历键(下标)
 
4、const 关键字
定义常量的关键字
一般为了和变量区分  常量定义用大写字母
常量一旦被定义,就不能重复更改常量值 
  const  PI = 3
    PI = 3.14  报错   
 
5、字符串模板  (解决字符串拼接)
解析字符串中的变量  
       字符串模板  `${    }`
字符串模板中  既可以识别变量         又可以识别函数
 
6、 箭头函数     用来改变匿名函数的写法
定义 :  () =>  {    }  
带有参数 :  (参数) =>  { 函数体 }
带有返回值 : ()=>{ return 返回值 }
 
7、  解构赋值  :  解析结构进行赋值
1、可以一次性定义多个变量
2、可以让一个函数返回多个值  利用   []
3、解构赋值可以作用在函数的参数上   参数传递顺序可以改变   利用 {  }
4、解构赋值 可以 实现两个数的交换
 
 
8、Array.from
Array.from : 将一个含有length 属性的 对象、(集合、类数组、伪数组)  转成 真正的数组  
Array.from( obj )  
 
 
9、set集合 和 map集合
Set集合  :   var set = new Set(); 定义一个set集合  
set集合特点 : 自动去重   不会进行自动类型转换
实现数组去重 : Array.from( new Set(arr) )
 
史上最短的数组去重的方法 :   [...new Set(arr)]
 
set集合的方法 : 
add()  向集合中添加一个数
delete()  删除集合中的某个数
has()  判断集合中是否含有某个值
clear()  清空集合
通过 size  属性 获取集合元素个数 
 
Map集合 ---存储的数据以键值对形式存储的 : 
set(键值对)  向集
 
10、  Symbol类型  
var num= new Number()
定义一个Symbol类型的数据
var lichune = Symbol("李春娥");
Symbol类型可以作用在对象上,对对象的某个属性起到保护作用
原文地址:https://www.cnblogs.com/tis100204/p/10302258.html