# 简介

​ ECMAscript 6.0,简称ES6。是javascript在ECMAScript 5.0的基础上衍生的下一代标准,于2015年发布。有人称javascript越来越像java了,趋近于强类型语言,大量的关键字被投入使用。现如今最新标准为2018年发布的ES9,随着各大主流浏览器的渐渐支持,ES6的掌握已经变成必要了。

# let 与 const 关键字

  1. let关键字

    let关键字用来声明变量,这类似于var,但是用let声明的变量只会在所在的代码块中有效(拥有块级作用域)

    {
    	var a = 10;
    	let b = 20;
    }
    console.log(a);	//10
    console.log(b);	//ReferenceError: b is not defined.
    

    上面的例子中,用var关键字声明的a能够在花括号外(块级作用域)正常打印结果,而用let关键字声明的关键字却报引用错误,b找不到。再来看一个经典的案例:

    for (var i=0;i<10;i++){
      setTimeout(function(){
        console.log(i);
      },1000);
    }
    //打印结果:10个10
    for (let i=0;i<10;i++){
      setTimeout(function(){
        console.log(i)
      },1000);
    }
    //打印结果:0,1,2,3,4,5,6,7,8,9
    

    为什么用var关键字声明变量的for循环,最后打印的是10个10?原因很简单,在ES5中,只有全局作用域和函数作用域(局部作用域)两种,所以for循环中所有被执行的setTimeout都指向的是全局的 i ,setTimeout是异步的函数,当执行的时候再回头看 i 已经自增完变成10并且不满足i<10的条件退出了循环。所以第一个for循环指向的就是10,并且打印了10次。

# 解构赋值

# 1.完全解构

# 2.不完全解构

# 字符串

# 1.模板字符串

# 2.字符串扩展方法

# 数组的扩展