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 tomulti-linestrings!`
模板化
你可以通過這種方式把 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也有不少這方面的改進)。
更新:
發現這個帖子被頂到了 HN 的首頁,我必須要加上遺漏的新標準中的模塊系統操作功能。演講中的例子:
import { $ } from "jquery.js" import { map, each } from "underscore.js"
還是一樣,全是 Python 的套路!被引用的 JavaScript 文件會代碼執行前加載的你的瀏覽器中。
來自: 外刊IT評論