投递人 丕子 发布于 2011-12-07 07:37 评论(7) 有1718人阅读  原文链接  [收藏]  « »

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

6
0
来自: 外刊IT评论
博问,解决您的技术难题 分享到: 新浪微博 腾讯微博 搜狐微博
相关阅读:
· 为什么说你不要独自编程(2012-05-24 07:44)
· 12 款优秀的 JavaScript MVC 框架评估(2012-05-23 11:34)
· 谈谈网络编程(基于C++语言)(2012-05-23 10:57)
相关标签: 程序员 JavaScript
已经有 7 位园友对此新闻发表了看法。 发表评论