JavaScript6让我很兴奋,这是我看了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也有不少这方面的改进)。
更新:
发现这个帖子被顶到了HN的首页,我必须要加上遗漏的新标准中的模块系统操作功能。演讲中的例子:
import { $ } from "jquery.js" import { map, each } from "underscore.js"
还是一样,全是Python的套路!被引用的JavaScript文件会代码执行前加载的你的浏览器中。