# 前端学习-ES6

133 阅读3分钟

ES6


  • ECMAScript和JavaScript
    • ECMA是标准,JS是实现。
    • ECMAScript简称ECMS或者ES
    • 类似于HTML5是标准,IE10、Chrome、FireFox都是实现
    • 低级浏览器主要支持 ES3.1
    • 高级浏览器正在从 ES5 过渡到ES6

1、Let和Const

  • let用来声明变量:
    • 不存在变量提升
    • 存在暂时性死区,ReferenceError
    • 不允许重复声明
  • const用来声明常量:
    • 一旦声明必须初始化,常量的值不能改变。
    • 只在声明的块级作用域内有效
    • 不会提升,存在暂时性死区,先声明再使用
    • 不可重复声明。
    • const本质:并不是变量的值不能改变,而是变量指向的那个内存地址不得改动。

2、块级作用域

  • 为什么需要块级作用域?
    • 内层变量可能会覆盖外层变量
    • 用来计数的循环变量泄露为全局变量。
  • 块级作用域中函数声明规则:
    • 允许在块级作用域中声明函数
    • 函数声明类似于var,即会提升全局作用域或函数作用域的头部。
    • 函数声明还会提升到块级作用域的头部。

3、箭头函数

  • 箭头函数this的指向是固定化的,这非常有利于封装回调函数。箭头函数没有自己的this,导致内部函数的this就是外层代码块的this,正因为它没有this,所以不能作为构造函数(不能使用new命令)。
  • 箭头函数的this的值和函数外面的this的值是一样的。
  • 特点:箭头函数中的this始终指向箭头函数定义时的离this最近的一个函数,如果没有最近的函数就指向window。

4、Promise

  • Promise是异步编程的一种解决方案,将异步操作以同步操作的流程表达出来,避免了层层嵌套的回调函数。
  • 它有三种状态:pending-进行中 、 resolved-已完成、rejected-已失败
  • Promise构造函数包含一个参数和一个带有resolve(解析)和reject(拒绝两个参数的回调)。在回调中执行一些操作(例如异步),如果一切都正常,则调用resolve,否则调用reject。
  • 对于已经实例过的promise对象可以调用promise.then()方法,传递resolve和reject方法作为回调。then()方法接收两个参数:onResolve和onReject,分别代表当前promise对象在成功或失败时。

5、for...of循环

    var arr=["a","b","c"];
    for(var v of arr){
        console.log(v);
    }
//输出:
//a
//b
//c

6、解构赋值

  • 数组解构赋值:数字中的值会自动被解析到对应接收该值得变量中,数组的解构赋值要一一对应,如果有对应不上的就是undefined
    var [name , pwd, sex ]=["小周","123456","男"];
    consele.log(name)   //小周
    console.log(pwd)    //123456
    console.log(sex)    //男

  • 对象的解构赋值
    • 对象的解构赋值与数组有一个重要的不同。数组的元素是按次序排列的,变量的取值由它的位置决定;而对象的属性没有次序,变量必须与属性同名,才能取到正确的值。

7、模板字符串

用一对反引号 标识,它可以当做普通字符串使用,也可以用来定义多行字符串,也可以在字符串中嵌入变量,js表达式或函数,变量、js表达式或函数需要写在 ${} 中。