JavaScript 6 看上去很美

红薯
 红薯
发布于 2011年12月07日
收藏 24

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


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文件会代码执行前加载的你的浏览器中。

本站文章除注明转载外,均为本站原创或编译。欢迎任何形式的转载,但请务必注明出处,尊重他人劳动共创开源社区。
转载请注明:文章转载自 OSCHINA 社区 [http://www.oschina.net]
本文标题:JavaScript 6 看上去很美
加载中

最新评论(38

LinkerLin
LinkerLin
Android势头不错。
白起
白起
其实并不是我不想用javascript,我是真心想用,但是兼容性问题让我很头大,我也不想花费时间在兼容性问题上,所以我做web前端基本都用jquery等框架,我真心希望web前端语言能大家形成一致的标准,不要大的语法不变,这个浏览器出现某个功能不兼容,那个浏览器看的效果不一样,做为一个Google粉丝,程序员应该集中精力解决真正的问题,而不是这些琐碎的小事,从某种程度上,在写后台管理模块我更倾向于用flex等
汪洋toy
汪洋toy
围观,不语
whaon
whaon
围观下
笨蛋EGG
笨蛋EGG
唉,用得少,还不知道js脚本还有这个版本号,呵呵···
Liuxd
Liuxd
怎么越来越像PHP?后面那个LIST不咋样嘛。
大辉狼
大辉狼

引用来自“lidashuang”的评论

引用来自“吴冠中”的评论

赶紧出个语言干掉javascript,受不了这东西了。

有个CoffeeScript

谷歌的Dart
hantsy
hantsy

引用来自“happysoul”的评论

var firstName = "Jack";
var message = `Hello ${firstName}!`; // "Hello Jack!"
这个就是问题啊~
JS用了 ${} 方法 那么java的EL怎么办~~ 晕死

`Hello ${firstName}!`

反撇号,执行命令。长得和PHP,Perl 差不多了。
返回顶部
顶部