在ES5中,处理长字符串时往往采用这样的写法:
var content = '<div class="container">' +
'<div class="header"></div>' +
'<div class="body"></div>' +
'<div class="footer"></div>' +
'</div>'
而在ES6 提供了更好---多行字符串,示例:
var content = `<div class="container">
<div class="header"></div>
<div class="body"></div>
<div class="footer"></div>
</div>`
除了创建多行字符串之外,``符号还可以用于创建字符串模板,我们可以在字符串模板中输出变量,示例:
let hello = 'hello'
let helloWorld = `${hello} world`
console.log(helloWorld)
运行结果
在ES5中,我们可以使用var关键字来声明函数作用域的变量。但在循环和判断语句中,var关键字并不生成作用域,这意味着在这两者的代码块中声明的变量在代码块外依然可以访问到,示例:
运行结果
在ES6中,我们可以使用let关键字来声明块级作用域的变量,示例
运行结果
除了let之外,我们还可以使用const关键字来声明块级作用域的变量,不过使用const声明的变量不可以修改。
在ES5中,对函数形式设置默认值需要这样写:
在ES6中则可以这么写:
使用ES5语法来声明一个引用外部变量或者包含方法的对象时,我们可以会这么写:
在ES6中则简化了这一写法,当对象引用外部变量和定义方法时,可以不再使用键值对的形式,示例:
在ES5中,分解一个对象需要这样写:
ES6则提供了更便捷的方式,示例:
除了对象外,我们还可以对更多类型的变量使用析构语法,示例
这一特性妙用无穷,除了为开发带来方便之外,还能使代码看起来十分高大上,当然也可能使代码变得异常难读。
更多请参见变量的解构赋值
在ES6中,任何需要匿名函数的地方,我们都可以使用箭头函数来替代。下面是在ES5中的几个使用匿名函数的示例代码:
使用箭头函数如下
与匿名函数不同的是,箭头函数并不会创建函数作用域,箭头函数中的this指向父级作用域,这在使用Vue进行开发时需要特别注意。
先来看一个示例:
在示例中定义了People 类,其拥有构造函数、country属性和name属性、getCountry方法和getName 方法;之后,又定义了Author类,Author继承于People,还为其拓展了email 和 getEmail 方法。
声明了People类的实例p对象和Author类的示例a对象,并调用了示例的方法,代码运行之后,控制台打印出:
在ES6之前,JS的模块有两大山头:一是基于AMD规范的requireJS;二是基于CMD规范seaJS,两者都是为了弥补JS没有模块化机制的缺陷而出现。
自从ES6诞生以来,JS也终于有了自己模块化机制。那么在ES6中,模块是如何导入导出的呢?
ES6 提供了export和import一对关键字进行模块导入和导出,示例:
greentings.js
main.js
更多请查看字符串的新增方法
实例方法:includes(), startsWith(), endsWith()
传统上,JavaScript 只有indexOf方法,可以用来确定一个字符串是否包含在另一个字符串中。ES6 又提供了三种新方法。
includes():返回布尔值,表示是否找到了参数字符串。
startsWith():返回布尔值,表示参数字符串是否在原字符串的头部。
endsWith():返回布尔值,表示参数字符串是否在原字符串的尾部。
repeat方法返回一个新字符串,表示将原字符串重复n次。
实例方法:padStart(),padEnd()
ES2017 引入了字符串补全长度的功能。如果某个字符串不够指定长度,会在头部或尾部补全。padStart()用于头部补全,padEnd()用于尾部补全。
实例方法:trimStart(),trimEnd()
ES2019 对字符串实例新增了trimStart()和trimEnd()这两个方法。它们的行为与trim()一致,trimStart()消除字符串头部的空格,trimEnd()消除尾部的空格。它们返回的都是新字符串,不会修改原始字符串。
更多查看正则的扩展
http://es6.ruanyifeng.com/#docs/style#%E6%95%B0%E7%BB%84
使用扩展运算符(...)拷贝数组。
结果:
http://es6.ruanyifeng.com/#docs/style#%E5%87%BD%E6%95%B0
使用默认值语法设置函数参数的默认值。
http://es6.ruanyifeng.com/#docs/style#%E6%A8%A1%E5%9D%97