ES6、ES7、ES8学习提炼总结:各自的特性

2018-11-2309:09:15WEB前端开发Comments3,691 views字数 2303阅读模式
ES6、ES7、ES8学习提炼总结:各自的特性

ECMAScript 6.0,简称ES6是JavaScript语言的下一代标准,在2015年6月发布。目的是让JavaScript语言可以用来编写复杂的大型应用程序,成为企业级开发语言。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/gcs/7965.html

Babel转码器

Babel是一个广泛使用的ES6转码器,可以将ES6代码转为ES5代码,从而在现有环境执行。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/gcs/7965.html

Babel的配置文件是.babelrc,存放在项目的根目录下。使用Babel的第一步,就是配置这个文件。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/gcs/7965.html

Babel提供babel-cli工具,用于命令行转码。

babel-cli工具自带一个babel-node命令,提供一个支持ES6的REPL环境。它支持Node的REPL环境的所有功能,而且可以直接运行ES6代码。它不用单独安装,而是随babel-cli一起安装。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/gcs/7965.html

$ npm install --save-dev babel-cli文章源自菜鸟学院-https://www.cainiaoxueyuan.com/gcs/7965.html

babel-register模块改写require命令,为它加上一个钩子。此后,每当使用require加载.js、.jsx、.es和.es6后缀名的文件,就会先用Babel进行转码。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/gcs/7965.html

$ npm install --save-dev babel-register文章源自菜鸟学院-https://www.cainiaoxueyuan.com/gcs/7965.html

如果某些代码需要调用Babel的API进行转码,就要使用babel-core模块。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/gcs/7965.html

$ npm install babel-core --save文章源自菜鸟学院-https://www.cainiaoxueyuan.com/gcs/7965.html

Babel默认只转换新的JavaScript句法(syntax),而不转换新的API,比如Iterator、Generator、Set、Maps、Proxy、Reflect、Symbol、Promise等全局对象,以及一些定义在全局对象上的方法(比如Object.assign)都不会转码。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/gcs/7965.html

ES6在Array对象上新增了Array.from方法。Babel就不会转码这个方法。如果想让这个方法运行,必须使用babel-polyfill,为当前环境提供一个垫片。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/gcs/7965.html

$ npm install --save babel-polyfill文章源自菜鸟学院-https://www.cainiaoxueyuan.com/gcs/7965.html

let和const命令

let和const只在当前块级作用域下声明才有效。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/gcs/7965.html

{
    let a = 10;
    var b = 1;
}
a // ReferenceError: a is not define.
b // 1
复制代码

不存在变量提升文章源自菜鸟学院-https://www.cainiaoxueyuan.com/gcs/7965.html

// var 情况
console.log(foo); // undefined
var foo = 2;
// let 情况
console.log(bar); // 报错ReferenceError
let bar = 2;
复制代码

暂时性死区文章源自菜鸟学院-https://www.cainiaoxueyuan.com/gcs/7965.html

console.log(bar); // 报错ReferenceError
let bar = 2;
复制代码

不允许重复声明文章源自菜鸟学院-https://www.cainiaoxueyuan.com/gcs/7965.html

let a; 
let a; 
console.log(a); // 报错
复制代码

const 声明一个只读的常量。一旦声明,常量的值就不能改变。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/gcs/7965.html

ES6声明变量的六种方法:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/gcs/7965.html

var、function、let、const、import、class文章源自菜鸟学院-https://www.cainiaoxueyuan.com/gcs/7965.html

变量的解构赋值

数组的解构赋值文章源自菜鸟学院-https://www.cainiaoxueyuan.com/gcs/7965.html

let [a, b, c] = [1, 2, 3]; // a = 1; b = 2; c = 3;
let [a, b, c = 3] = [1,2]; // a = 1; b = 2; c = 3;
复制代码

对象的解构赋值文章源自菜鸟学院-https://www.cainiaoxueyuan.com/gcs/7965.html

let { foo, bar } = { foo: "aaa", bar: "bbb" }; 
复制代码

字符串的解构赋值文章源自菜鸟学院-https://www.cainiaoxueyuan.com/gcs/7965.html

const [a,b,c,d,e] = 'hello';
复制代码

函数参数的解构赋值文章源自菜鸟学院-https://www.cainiaoxueyuan.com/gcs/7965.html

funtion add([x, y]) {
    return x + y;
}
add([1,2]);  // 3
复制代码

用途文章源自菜鸟学院-https://www.cainiaoxueyuan.com/gcs/7965.html

  • 交换变量的值
let x = 1; 
let y = 2;
[x, y] = [y, x];
复制代码
  • 从函数返回多个值
// 返回一个数组
function example() {
    return [1, 2, 3];
}
let [a, b, c] = example();

// 返回一个对象
function example() {
    return {
        foo: 1,
        bar: 2
    };
}
let { foo, bar } = example();
复制代码
  • 函数参数的定义
// 参数是一组有次序的值
function f([x, y, z]) { ... }
f([1, 2, 3]);

// 参数是一组无次序的值
function f({x, y, z}) { ... }
f({z: 3, y: 2, x: 1});
复制代码
  • 提取JSON数据
let jsonData = {
    id: 42,
    status: "OK",
    data: [867, 5309]
};
let { id, status, data: number } = jsonData;
console.log(id, status, number);
复制代码
  • 函数参数的默认值
JQuery.ajax = function (url, {
   async = true,
   beforeSend = function () {},
   cache = true,
   complete = function () {},
   crossDomain = false,
   global = true
} = {}) {
    // do stuff 
};
复制代码
  • 遍历Map结构
const map = new Map();
map.set('first', 'hello');
map.set('second', 'world');

for (let [key, value] of map) {
  console.log(key + " is " + value);
}
// first is hello
// second is world

// 获取键名
for (let [key] of map) {
  // ...
}

// 获取键值
for (let [,value] of map) {
  // ...
}

作者:永远保留内心的简单和单纯
链接:https://juejin.im/post/5bf61d995188250808257441
来源:掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/gcs/7965.html

文章源自菜鸟学院-https://www.cainiaoxueyuan.com/gcs/7965.html
  • 本站内容整理自互联网,仅提供信息存储空间服务,以方便学习之用。如对文章、图片、字体等版权有疑问,请在下方留言,管理员看到后,将第一时间进行处理。
  • 转载请务必保留本文链接:https://www.cainiaoxueyuan.com/gcs/7965.html

Comment

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定