es6,全称ECMAScript6(又名es2015)。何为ECMAScript?咱们常说的Javascript和它又有什么联系呢?javascript
阮一峰老师有一句话描述的比较准确:“ECMAScript是Javascript语言的国际标准,Javascript是ECMAScript的实现”。js有几个大版本,如今用的比较多的是es3,es5。而在去年,es6的标准被推出,对于每一个前端开发者而言,拥抱新的标准是必然的,因此从如今开始,es6应该要成为一个前端开发者的基本技能。好,有关标准的问题就此打住,如今就来看看应该如何使用es6把!前端
万事开头难java
毕竟也是新标准,所以在浏览器的支持方面,如今仍是存在着不少问题。不过随着标准的推广,相信浏览器的支持度也会愈来愈好。能够从这里进入查看当前浏览器对es6的支持程度。node
不过有不少种方法可供你们书写并运行es6的程序,如下列出两种方法供你们参考:git
1.在命令行中使用Babel转码器。es6
首先须要安装两个工具github
npm install babel-cli -g (babel的命令行工具)npm
npm install babel-perset-es2015 浏览器
具体使用可参考 http://babeljs.io/docs/plugins/preset-es2015/babel
这种方法比较快捷,能够用做入门练手使用。
2.使用Babel在线编码器
能够在http://babeljs.io/repl/手写你的es6代码,它会自动帮你转成es5代码。
强烈推荐!
固然还有其余的方法,对node很是熟练的同窗也能够尝试在node中编写es6代码了。
变量提高问题
这是我去年参加阿里的春招的第一题。这道题用很是简单的代码刻画了一个可能不少人都不留意的问题---变量提高问题。
我拿到这道题的时候有点懵,因此直接拿到浏览器去运行了得除了A选项,是否是以为很奇怪呢?
所谓变量提高,指的就是同一个函数做用域中,变量在声明以前调用了,此时会返回undefined。确实和C,C++相比,这个变量提高是个很大的设计失误,所以在es6中标准抛弃了这个问题。使用的是let命令进行声明。
console.log(test); // Error
let test = 10;
let&const降临
let,const让js向传统面向对象语言靠拢。为何这么说呢?
除了刚刚讲到的变量提高问题,在变量声明方面还存在几个问题,比方说重复声明,做用域,闭包。
重复声明: 在es3与es5中,连续var两次变量不会出现什么问题,但每每是很好笑的。es6中若是出现了这样的语法,那就通通不能经过。
做用域: 在es3与es5中,函数外部能够访问到块级做用域中的变量(如if,for),因此在javascript高级程序设计一书中做者提到了js没有块级做用域这一说。而在es6中,块级做用域赋予了js更有保障的生命力,全局变量泄露的问题所以解决。
闭包: 这是个比较难懂的概念,在es3和es5中,利用闭包解决了许多函数做用域之间的问题,在es6中可使用let来代替闭包。因为闭包概念比较重要,暂时放到之后的博文中详细讲解。
为了能具体说明let,const两者的用法,能够从这里进入查看与他们相关的操做: let&const的小demo
let和const只是最简单的特性,因此开始慢慢地拥抱标准,走进es6把。