ECMAScript 6 看上去很美

本文是从 ECMAScript 6 looks promising 这篇文章翻译而来。



ECMAScript 6 让”我“很兴奋,这是”我“看了 David Herman 在 YUIConf 2011 大会上的演讲后 的反应。”我“非常希望这些语言特征能尽快的在 V8 引擎上实现,这样”我“就可以在 node.js 里使用它们了。这些新增加的语言特征对于一个使用 JavaScript 的程序员来说,解决了很多以前使用起来很不方便的东西。尽管这个标准中 2013 年才能制定完成(大会上 David 这样说的),谷歌浏 览器和火狐浏览器很有可能会提前实现这些特征。 


从”我“个人来说,下面的这些特征”我“很感兴趣:


 


let 关键字


let 关键字能产生一个代码块内的变量范围。因为 var 有一个函数式的范围概念,这有时候容易产生出不注意的错误。以后,我们完全使用 let 来代替 var,从而避免这样的错误。


OOXX:ECMAScript 5.1 里面见过了。


 


缺省参数




function foo(bar=”baz”) {
console.log(bar);

}



有了缺省参数,省去了很多折腾的代码。


OOXX:I like it


 


非严格的解构方式


很像Python语言,解构时不需要严格匹配。




let [x,y] = [3,4,5];   // x=3, y = 4



 OOXX:不喜欢,那 5 去哪了?


 


多行模式的字符串表达


你可以简单的使用 </code> (反点号)操作符来声明一个多行字符串。</p> <div> <div> <pre class="brush: js">var htmlString =Say hello to
multi-line
strings!</pre> </div> </div> <p><span style="color: #ff0000;">&nbsp;OOXX:</span>不错不错,用 \n 这个,大多人都会没看懂。</p> <p>&nbsp;</p> <h3>模板化</h3> <p>你可以通过这种方式把JavaScript变量嵌入的字符串中:</p> <div> <div> <pre class="brush: js">var firstName = "Jack"; var message =Hello ${firstName}!`; // “Hello Jack!”



XXOO: 大部分模版引擎都会去解析,然后报错吧


 


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也有不少这方面的改进)。


XXOO: 也是貌似 ECMAScript 5.1 里面看到过了。


 


更新:


发现这个帖子被顶到了HN的首页,”我“必须要加上遗漏的新标准中的模块系统操作功能。演讲中的例子:




import { $ } from “jquery.js”
import { map, each } from “underscore.js”



还是一样,全是Python的套路!被引用的 JavaScript 文件会代码执行前加载的你的浏览器中。


XXOO: 没看懂 (┬_┬)


 


OOXXOO: 都没有实战过,也只能自己 Demo 玩玩。好像没多大意思,可就喜欢捯持捯持 o(∩_∩)o