由于浏览器对ES6的支持还不是很好,编写ES6代码前我们要安装一个babel工具将ES6代码编译成ES5代码,用如下命令安装babel:
npm install -g babel-core //安装babel核心库 npm install -g babel-cli //安装babel命令行工具
安装成功后,我们将a.js的ES6代码编译为b.js的ES5代码的命令为:
babel a.js -o b.js
这里要注意由于babel最新版本还有对jsx,ES7等规范的支持,所以还要在当前目录新建一个.babelrc文件来指定当前使用JS的候选版本,其内容为:
{ "presets": ["es2015"] //指定当前JS版本为es2015 }
ES6里用let声明具有区块作用域的变量,什么是区块作用域,学习过C,C++,Java等语言的同学都知道,如循环、if/else等、或用花括号代码块里声明的变量是具有作用域的,超出该范围即无法使用,js一直没有这个概念,ES6补上了这个缺口。
用const声明的常量无法在后面的代码中改值。
ES6里还有一个很方便的就是spread表达式,举个例子:
function cook(dessert, ...drink) { let temp = dessert; for (let i = 0; i < drink.length; ++i) { temp += ',' + drink[i]; } console.log(temp); } cook('cake', 'juice', 'cola'); // 运行结果为 cake,juice,cola
…后声明的drink里以数组的形式存放了函数的剩余参数,是不是很方便。