ES6 板字符串
模板字符串是 ES6 中非常重要的一个新特性,这个特性使得处理相关业务变得更加容易。
基础用法
javascript
注意这里不是双引号,而是反撇号`
在模板字符串中,还可以拼接 html 元素,同时空格、缩进、换行都会被保留,并且如果模板字符串中的变量没有声明,将报错。
javascript
上面代码中,
<div>
标签前面会有一个换行。如果你不想要这个换行,可以使用 trim 方法消除它。javascript
在模版字符串内使用反引号`时,需要在它前面加转义符\
javascript
嵌入变量
javascript
当有变量参与拼接时,ES5 下必须用+号这样的形式进行拼接,这样很麻烦而且很容易出错。
ES6 新增了字符串模版,可以很好的解决这个问题。这时再引用 str 变量就需要用\${name}这种形式了。
javascript
如果大括号内部是一个字符串,将会原样输出:
javascript
对运算的支持
在\${}里面,可以写任意的 JS 表达式,比如我们用它进行运算
javascript
模板字符串调用函数
javascript
ES6 之变量的解构赋值
1.什么是解构?
ES6 允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构。它在语法上比 ES5 所提供的更加简洁、紧凑、清晰。它不仅能减少你的代码量,还能从根本上改变你的编码方式。
2.数组解构
以前,为变量赋值,我们只能直接指定值,比如
javascript
现在可以用数组解构的方式来进行赋值
javascript
这是数组解构最基本类型的用法,还可以解构对象数组
javascript
3.数组模式和赋值模式统一
这条可以理解为等号左边和等号右边的形式要统一,如果不统一解构将失败。
javascript
如果解构不成功,变量的值就等于
undefined
javascript
上述是完全解构的情况,还有一种是不完全解构,即等号左边的模式,只匹配一部分的等号右边的数组,解构依然可以成功。
javascript
4.解构的默认值
解构赋值允许指定默认值。
javascript
5.对象的解构赋值
对象的解构与数组有一个重要的不同。数组的元素是按次序排列的,变量的取值由它的位置决定;而对象的属性没有次序,变量必须与属性同名,才能取到正确的值。
javascript
如果变量名与属性名不一致,必须写成下面这样。
javascript
如果在解构之前就定义了变量,这时候再解构会出现问题。下面是错误的代码,编译会报错(因为 js 引擎会将{a}理解成一个代码块,从而发生语法错误。只有不将大括号写在行首,避免 js 将其解释成代码块,才能解决这个问题)
javascript
要解决报错,使程序正常,这时候只要在解构的语句外边加一个圆括号就可以了
javascript
6.函数参数
函数的参数也可以使用解构赋值。
javascript
函数参数的解构也可以使用默认值。
javascript
7.字符串解构
字符串被转换成了一个类似数组的对象。
javascript
8.数值和布尔值的解构赋值
解构赋值时,如果等号右边是数值和布尔值,则会先转为对象。
plain
解构赋值的规则是,只要等号右边的值不是对象或数组,就先将其转为对象。由于
undefined
和null
无法转为对象,所以对它们进行解构赋值,都会报错。javascript
9.解构赋值的应用
1.交换变量的值
通常交换两个变量的方法需要一个额外的临时变量,如下
javascript
用 ES6 解构赋值的话,会变得很简洁
javascript
2.从函数返回多个值
函数只能返回一个值,如果要返回多个值,只能将它们放在数组或对象里返回。有了解构赋值,取出这些值就非常方便。
javascript
3.访问数组中元素
有种场景,比如有一个数组(可能为空)。并且希望访问数组的第一个、第二个或第 n 个项,但如果该项不存在,则使用指定默认值。
通常会使用数组的
length
属性来判断javascript
如果用 ES6 解构赋值来实现上述逻辑
javascript
4.提取 JSON 数据
javascript
5.遍历 Map 结构
任何部署了 Iterator 接口的对象,都可以用
for...of
循环遍历。Map 结构原生支持 Iterator 接口,配合变量的解构赋值,获取键名和键值就非常方便。javascript
如果只想获取键名,或者只想获取键值,可以写成下面这样。
javascript
文章部分内容参考:阮一峰老师的《ECMAScript 6 入门》一书