首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

新 JavaScript 中的变量声明等功能-1

新 JavaScript 中的变量声明等功能-1

ECMAScript(通常称为 JavaScript)是一种经历了许多波折的脚本语言。它最初是为了实现 Netscape Navigator(第一批 Web                浏览器之一)的可扩展性而创建的。JavaScript 最初的命名考虑到了与 Java 的关联(Java                那时正迅速发展成为一种重要语言),多年来,它一直被视为两种语言中的次要语言。
关于本系列ECMAScript 6 于 2015 年 6 月被采纳,是第一个为某种语言编写的 JavaScript 标准,它不只是帮助将现代 Web 联系在一起,而且为现代                    Web 提供了强大的支持。在本  中,编程语言导师 Ted Neward 将介绍正成为您最喜欢的 Web                    开发工具中的标准的新功能和语法,还将展示如何恰当地将它们引入您自己的代码中。

ECMAScript的发展历程ECMA 标准的一种变体在 1997 年为该语言赢得了一定的信赖,但第一个主要的标准版本 ECMAScript 4                将社区一分为二。它通过一个谨慎的、勘误式的版本(ECMAScript 5,也称为 “Harmony”)重建了统一性的感觉。
但在最近,JavaScript 扮演了一个回头浪子角色。在 Node.js 的支撑下,它成为了一种举足轻重的服务器端工具。在 2015 年 6                月被正式采纳为一种标准后,ECMAScript 2015(也称为 ECMAScript 6 或 ES6)逐步进入主流应用领域。ECMAScript 2016 于                2016 年 6 月被作为规范采纳。
随着 npm 注册表中的库和包迁移到最新版本,JavaScript                开发人员也是时候了解一下目前标准中的新特征了。毋庸置疑,一旦了解了其中一些功能,您就会想开始在代码中使用它们。
我们首先来看看对代码的灵活性和效率产生重大影响的 6 大语言变化。在这些变化之中,新的解构赋值运算或许是最重要的,所以我将在这里和  中介绍一些使用它的场景。
迁移战略尽管 ECMAScript 6                向该语言中引入了一些令人兴奋的变化,但大部分变化都被划分为语法糖(syntactic sugar)。在许多情况下,新标准通过改变代码编写方式而不是代码的功能来提高效率。这些更新与开发人员已在执行的工作的关系最紧密                — 还未标准化的快捷方式和解决办法。理想情况下,应用新语言特性使编写相同代码变得更快更容易。
从迁移角度讲,专注于语法糖(syntactic sugar)具有一定的优势。与学习新功能相比,扩展您对现有功能的了解具有更少的认知负担。另一方面,目前有多种方式来实现相同的结果:新的 ECMAScript                6                方式和旧方式。有时可能很难理解这一点,至少在您的迁移达到转折点之前是这样的。由于可以灵活地采用如此多的变化,所以可采用一种更精细、更灵活的迁移战略。对许多企业而言,这将是最合理的路径。ECMAScript                带来了非常多的新功能,尝试一次性集成它们可能负担太重。
术语 transpiler                    仅在最近才得到普遍应用。编译器可以获取人类可读的源代码并生成可执行代码(比如机器码或中间代码,比如 Java 或 .NET CLR                    字节码),transpiler 将人类可读的源代码转换为另一组源代码。任何读取 ECMAScript 6 源代码并生成缩小版 JavaScript 的工具都属于                    transpiler。有趣的是,存在于 JavaScript 环境中的许多新语言(比如 TypeScript、CoffeeScript 和                    Scala.js)都符合此描述。

另一个要考虑的迁移问题是环境的兼容性。众所周知,旧浏览器永远都不会被废弃 — Internet Explorer                就是一个恰当的例子。幸运的是,如果您的客户端不是 100% 兼容 ECMAScript 6,您可以使用一个 “transpiler” 将 ECMAScript 6                源代码转换为兼容 ECMAScript 5 的代码。有关两个较流行的工具的更多信息,请参阅  和 。
我们也可能非常高兴服务器环境完全在我们的掌控之下。在编写本文时,Node.js 的最新版本实现了新标准的 92%。除非您考虑剩余 8% 中的功能,否则无需额外设置即可在                Node.js 中运行 ECMAScript 6。
暂时知道这么多就够了;我们开始看看引入的一些变化。
语法变化语法变化是最明显的,在某些情况下也是最容易理解的。尽管 ECMAScript 6 没有对 JavaScript 整体语法进行太多改动(它仍是一种基于 C                的语言,包含分号和花括号),但它确实清理了一些对开发人员具有细微影响的 “小” 东西。这里将介绍其中的少数变化。
ECMAScript 6                    中的表情符号支持已扩展,现在同时支持字符串字面量和变量标识符名称,但是,请不要在您的代码中使用表情符号。向函数名称中添加 “皱眉表情”                    只能反映您对代码库的看法,但这可能造成需要调用它的程序员的 “防卫过当”。

Unicode 8.0首先,ECMAScript 6 现在需要符合 Unicode Standard 8.0 版或更高版本。这意味着兼容 ECMAScript 的环境必须接受笑脸表情,因为                8.0 拥有表情符号的字符代码。
因为大部分文本编辑器都尚未直接支持 Unicode 8.0 的所有字符代码,所以您需要将大部分 Unicode 字符实现为转义字符,比如字符串字面量中的                    \u{1d306}。因为您还可以使 Unicode 作为标识符,所以 ECMAScript 6 也支持对变量名称使用 Unicode                转义语法。这是一个示例:
var \u{102C0} = { \u{102C0} : 2 };
return \u{102C0};




大多数时候,开发人员将 Unicode                用于国际化用途,这意味着它将出现在字符串字面量内,而不是用作变量标识符。考虑在其代码中使用英语以外的语言的开发人员可能仍会喜欢变量标识符中新增的灵活性。
二进制和八进制字面量考虑无处不在的整数字面量:9。由于 9 是一个字面量值,而且应考虑到阿拉伯记数制(十进制)的主导性,9                被视为一个十进制字面量。但是,计算机不会以十进制形式思考;它们以二进制、八进制或十六进制形式进行思考。ECMAScript 很早就支持十六进制字面量(通过在字面量中添加                    0x 作为前缀来表示)。在 ECMAScript 6 中,您可以通过在字面量中分别添加 0b 或                    0o 作为前缀来表达二进制和八进制字面量。因此,在 ECMAScript 6 中,下面的表达式中的所有字面量都会打印                    true,因为它们都是相同的值:
var decimalLit = 15;
var hexadecimalLit = 0xF;
var octalLit = 0o17;
var binaryLit = 0b1111;
console.log(decimalLit == hexadecimalLit);
console.log(decimalLit == octalLit);
console.log(decimalLit == binaryLit);
返回列表