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把。