ES6模板字符串``

2019-01-24  本文已影响0人  Kevin_hoo

`` 反引号,该符号包裹的字符串能够带来的功能如下:

可以包涵换行

在反引号以内,可以有多个换行,都能够在使用的时候被识别

如果使用模板字符串表示多行字符串,所有的空格和缩进都会被保留在输出之中。

$('#list').html(`
<ul>
  <li>first</li>
  <li>second</li>
</ul>
`);
可以嵌入变量

使用美元符号和大括号包裹变量${对象名.属性名}

模板字符串中嵌入变量,需要将变量名写在${}之中。(注:不声明会报错)
let name = 'jim',
     age = 18,
     gender = 'male';
console.log(`name : ${name} , age : ${age} , gender : ${gender}`)// name : jim , age : 18 , gender : male
可以原生输出

原生输出包含转义字符串的内容String.raw模板字符串

结果包含\\,如果``前面不加temp,则转义生效,为\
let temp = String.raw;
  let result = temp`
  <div>raw方式的div \\ </div>
  `
console.log(result)// <div>raw方式的div \\ </div>

另外

大括号内部可以放入任意的JavaScript表达式,可以进行运算,以及引用对象属性,而且还能调用函数

let x = 1,
    y = 2;
console.log(`${x} + ${y * 2} = ${x + y * 2}`)//  "1 + 4 = 5"


let obj = {x: 1, y: 2};
console.log(`${obj.x + obj.y}`)//  3


function fn() {
    return "Hello World";
}
console.log(`foo ${fn()} bar`)// foo Hello World bar

模板字符串还可以嵌套

let tmpl =  `
  <table>
  ${this.contList.push(`<div>${this.obj.latitude}</div>`)}
  </table>
  `

最后看一个有趣的题目

function getPersonInfo(one, two, three) {
  console.log(one);
  console.log(two);
  console.log(three);
}
const person = "Lydia";
const age = 21;

getPersonInfo`${person} is ${age} years old`; // 打印结果为:["", "is", "years old"] Lydia 21

标签函数会接收多个参数。
第一个参数是包含了字符串字面量(即那些没有变量替换的值)的数组
后面的参数是已经替换后的变量值

上一篇下一篇

猜你喜欢

热点阅读