ES6第N次学习

1、简介

ECMAScript和JavaScript的区别:
历史原因就不赘述了,总之,ECMAScript是标准,JavaScript是具体实现。
ES6是 下一代js标准,涵盖ES2015、ES2016、ES2017,但是一般泛指ES2015。
一个新的语法从草案到正式标准一般经历5个阶段:stage0 - stage4。

****babel只转换新的语法,像箭头函数这些,而不转换新的API,像Promise、Object.assign、Array.from等(详细请看:
https://github.com/babel/babel/blob/master/packages/babel-plugin-transform-runtime/src/definitions.js
),为了使用这些方法,就要安装babel-polyfill,为当前环境提供一个垫片。****

npm install --save babel-polyfill
//脚本头部引入
import 'babel-polyfill';

2、let + const

**** 不存在变量提升,只能先声明再使用,不能重复声明。
都存在暂时性死区(块级作用域内有效,不会访问到上级作用域内的相同变量) 。
尽量避免在块级作用域中声明函数,若必要,声明函数表达式。
const保证的是指向的变量的内存地址不变,而不是值不变。


for (let i = 0; i < 3; i++) {//设置循环变量的部分为父作用域
      //循环体部分为子作用域,所以 i 可以重新定义
      let i = 'abc';
      console.log(i);
 }
 // abc
 // abc
 // abc

function func(a, b){
    //重新定义 a b 会报错,属于同一作用域
    let a = 1;
    let b = 2;
}

ES6中6种声明变量的方式:var function let const import class
全局变量和顶层对象的属性脱钩。(ES5中全局变量即为window的属性)

3、解构赋值

  • 有数组和对象、字符串的解构赋值。
  • 当等号右边不是对象和数组时,会将其转换成对象,所以null和undefined报错。
  • 允许设置默认值。
  • 用途:
    • 提取json数据
    • 函数参数的默认值设置
    • 导入指定模块
let {pattern: variable} = {foo:1, bar: 2}//先模式,再变量
//尽量避免在解构赋值时使用圆括号,具体可以参考该章:http://es6.ruanyifeng.com/#docs/destructuring

4、字符串的扩展

字符编码相关就不细说了,没什么实践经验,总是看过就忘,用到的时候再去看了。
记几个函数:

includes startsWith endsWith : 是否包含特定字符、是否已特定字符开头结尾等
repeat padStart padEnds :字符串重复、补齐字符串等

5、正则的扩展

修饰符: y u
.source 正文 .flag 标志

你可能感兴趣的:(ES6第N次学习)