ES6也出来有一会时间了,他新增的语法糖也的确大大提升了开发者的效率,今天就总结一些本身用到最多的。javascript
说到ES6确定是先介绍Babel了,据阮一峰老师介绍到,Babel是一个普遍使用的转码器,能够将ES6代码转为ES5代码,从而在现有环境执行。这意味着,你能够如今就用ES6编写程序,而不用担忧现有环境是否支持。html
Babel的配置文件是.babelrc
,存放在项目的根目录下。使用Babel的第一步,就是配置这个文件。
该文件用来设置转码规则和插件,基本格式以下。java
{ "presets": [], "plugins": [] }
presets
字段设定转码规则,官方提供如下的规则集,你能够根据须要安装。react
# ES2015转码规则 $ npm install --save-dev babel-preset-es2015 # react转码规则 $ npm install --save-dev babel-preset-react # ES7不一样阶段语法提案的转码规则(共有4个阶段),选装一个 $ npm install --save-dev babel-preset-stage-0 $ npm install --save-dev babel-preset-stage-1 $ npm install --save-dev babel-preset-stage-2 $ npm install --save-dev babel-preset-stage-3
而后,将这些规则加入.babelrc
es6
{ "presets": [ "es2015", "react", "stage-2" ], "plugins": [] }
想更深刻了解Babel
的话能够去阮一峰老师的Babel 入门教程看更详细的。npm
接下来就是咱们开发中用到最多的ES6语法。数组
为了让你们能快速理解ES6语法,部分我会拿ES5的来对比,你会发现大有不一样O(∩_∩)O~
。浏览器
ES6中添加了对类的支持,引入了class关键字,想了解ES5对象语法的能够敲这里javascript中的面向对象babel
//定义类 class Cons{ constructor(name,age){ this.name = name; this.age = age; } getMes(){ console.log(`hello ${this.name} !`); } } let mesge = new Cons('啦啦啦~',21); mesge.getMes(); //继承 class Ctrn extends Cons{ constructor(name,anu){ super(name); //等同于super.constructor(x) this.anu = anu; } ingo(){ console.log(`my name is ${this.name},this year ${this.anu}`); } } let ster = new Ctrn('will',21); ster.ingo(); ster.getMes();
新增的箭头操做符=>
便有殊途同归之妙。它简化了函数的书写ecmascript
var arr = [1, 2, 3]; //ES5 arr.forEach(function(x) { console.log(x); }); //ES6 arr.forEach(x = > console.log(x));
数组中的值会自动被解析到对应接收该值的变量中
var [name,,age] = ['will','lala','21']; console.log('name:'+name+', age:'+age); //输出: name:will, age:21
定义函数的时候指定参数的默认值
//ES5 function fn(name){ var name=name||'will'; console.log('my name is '+name); } //ES6 function fn(name='will'){ console.log(`my name is ${name}`); }
使用反引号`
来建立字符串
//ES5 var str = 'The 3.1 work extends XPath and' +'XQuery with map and array data structures' +'along with additional functions and operators' +'for manipulating them; a primary motivation' +'was to enhance JSON support.'; //ES6 var roadPoem = `The 3.1 work extends XPath and XQuery with map and array data structures along with additional functions and operators for manipulating them; a primary motivation was to enhance JSON support.`;
由美圆符号加花括号包裹的变量${name}
var name = 'will'; console.log(`my name is ${name}`);
在函数中使用命名参数同时接收不定数量的未命名参数,在之前的JavaScript代码中咱们能够经过arguments变量来达到这一目的。而ES6中是以下实现的
function add(...x){ return x.reduce((m,n)=>m+n); } console.log(add(1,2,3));//输出:6 console.log(add(1,2,3,4,5));//输出:15
let
与const
关键字!能够把let
当作var
,它定义的变量被限定在了特定范围内。const
则用来定义常量,即没法被更改值的变量。共同点都是块级做用域。
//let for (let i=0;i<2;i++){ console.log(i);//输出: 0,1 } console.log(i);//输出:undefined //const const name='a'; name='b'; //报错
在ES6标准中支持module
了,将不一样功能的代码分别写在不一样文件中,各模块只需使用export
导出公共接口部分,而后经过使用module
模块的导入的方式能够在其余地方使用
// b.js function fn(){ console.log('hello world'); } export fn; // a.js module { fn } from "./b"; fn(); //而后在HTML引入a文件运行浏览器
咱们都知道for in
循环用于遍历数组,类数组或对象,ES6中新引入的for of
循环功能类似,不一样的是每次循环它提供的不是序号而是值。
var arr = [ "a", "b", "c" ]; for (v of arr) { console.log(v);//输出 a,b,c }
其余还有Map、Set等能够查看阮一峰的ECMAScript 6 入门