ES6 有什么新东西?

614 查看

你可能已经听说过 ECMAScript 6 (简称 ES6)了。ES6 是 Javascript 的下一个版本,它有很多很棒的新特性。这些特性复杂程度各不相同,但对于简单的脚本和复杂的应用都很有用。在本文中,我们将讨论一些精心挑选的 ES6 特性,这些特性可以用于你日常的 Javascript 编码中。

请注意,当前浏览器已经全面展开对这些 ES6 新特性的支持,尽管目前的支持程度还有所差异。如果你需要支持一些缺少很多 ES6 特性的旧版浏览器,我将介绍一些当前可以帮助你开始使用 ES6 的解决方案。

文中大多数代码示例都带有“运行代码”链接,你可以查看代码并运行它。

变量

LET

你习惯于用 var 声明变量。现在你也可以用 let 了。两者微妙的差别在于作用域。var 声明的变量作用域为包围它的函数,而 let 声明的变量作用域仅在它所在的块中。

这样使得代码更加干净,减少滞留的变量。看看以下经典的数组遍历:

举个例子,通常情况下,我们在同一作用域里使用变量 j 来完成另一个遍历。但是,现在有了 let,可以安全地再一次声明 i 变量。因为它只在被声明的块中有效。

CONST

还有另一个用于声明块作用域变量的方法。使用 const,你可以声明一个值的只读引用。必须直接给一个变量赋值。如果尝试修改变量或者没有立即给变量赋值,都将报错:

注意,对象的属性或数组成员还是可以改变的。

箭头函数

箭头函数为 Javascript 语言增色不少。它使得代码更简洁。我们早早地在本文中介绍箭头函数,这样就可以在后面的示例中加以利用了。以下代码片段是箭头函数和我们熟悉的 ES5 版本的写法:

运行代码

如果我们观察箭头函数的语法,会发现其中并没有出现 function 关键词。只保留零或多个参数,“胖箭头”(=>)和函数表达式。return 声明被隐式加入。

带有零或多个参数时,必须使用括号:

如果需要写更多的逻辑或更多的空格,可以把函数表达式放在({...})块中。

运行代码

箭头函数不单只是为了输入更少的字符,它们的表现也和一般函数不同。它继承了当前上下文的 thisarguments。这就意味着,你可以避免写 var that = this 这样丑陋的代码,也不需要把函数绑定到正确的上下文了。举例如下(注意对比 this.title 和 ES5 版本的 that.title 的不同):

运行代码

字符串

方法

几个方便的方法被添加到 String 的原型中。其中大多数用于简化需要用 indexOf() 方法来解决的问题的复杂度,并达到同样的效果:

很简单但是很有效。添加了另外一个方便的用于创建重复字符串的方法:

模板字符串

模板字符串提供一个简洁的方式来实现字符串插值。你可能已经对这种语法很熟悉了;它基于美元符号和花括号 ${..}。模板字符串置于引号之中。以下是快速示例:

运行代码

以上形式对比 ES5 仅仅是便于字符串拼接。事实上,模板字符串还可以用于多行字符串。记住空格也是字符串的一部分。