JavaScript 6看上去很美
本文是從 ECMAScript 6 looks promising 這篇文章翻譯而來。
JavaScript 6讓我很興奮,這是我看了David Herman在YUIConf 2011大會上的演講后的反應。我非常希望這些語言特征能盡快的在V8引擎上實現,這樣我就可以在node.js里使用它們了。這些新增加的語言特征對于一個使用JavaScript的程序員來說,解決了很多以前使用起來很不方便的東西。盡管這個標準中2013年才能制定完成(大會上David這樣說的),谷歌瀏覽器和火狐瀏覽器很有可能會提前實現這些特征。
從我個人來說,下面的這些特征我很感興趣:
let 關鍵字
let 關鍵字能產生一個代碼塊內的變量范圍。因為 var 有一個函數式的范圍概念,這有時候容易產生出不注意的錯誤。以后,我們完全使用 let來代替var,從而避免這樣的錯誤。
缺省參數
- function foo(bar="baz") {
- console.log(bar);
- }
有了缺省參數,省去了很多折騰的代碼。
非嚴格的解構方式
很像Python語言,解構時不需要嚴格匹配。
- let [x,y] = [3,4,5]; // x=3, y = 4
多行模式的字符串表達
你可以簡單的使用 ` (反點號)操作符來聲明一個多行字符串。
- var htmlString = `Say hello to
- multi-line
- strings!`
模板化
你可以通過這種方式把JavaScript變量嵌入的字符串中:
- var firstName = "Jack";
- var message = `Hello ${firstName}!`; // "Hello Jack!"
List 復合操作
同樣,這也是一個非常Python的結構:
- let even = [ x for (x in values([1,2,3,4,5,6])) if (x %2 === 0) ];
使用 values() 能夠讓 x 來表示List里的成員的值,而不是成員變量。你也可以使用新的 for of 語法來實現這樣的功能:
- let even = [ x for(x of [1,2,3,4,5,6]) if (x%2 === 0) ];
除此之外, map, filter, reduce 等等概念也將會成為新標準的內容之一 (有一些功能已經在谷歌瀏覽器和火狐瀏覽器里被實現,IE9也有不少這方面的改進)。
更新:
發(fā)現這個帖子被頂到了HN的首頁,我必須要加上遺漏的新標準中的模塊系統(tǒng)操作功能。演講中的例子:
- import { $ } from "jquery.js"
- import { map, each } from "underscore.js"
還是一樣,全是Python的套路!被引用的JavaScript文件會代碼執(zhí)行前加載的你的瀏覽器中。
【編輯推薦】