ES6之模板字符串

1
2
3
4
5
function authorize(user, action) {
if (!user.hasPrivilege(action)) {
throw new Error(`User ${user.name} is not authorized to do ${action}.`);
}
}

上面代码中,${user.name}${action} 被称为模板占位符,JavaScript 将把 user.name 和 action 的值分别插到对应的位置上,然后生成像这样 “User jorendorff is not authorized to do hockey.” 的字符串。

现在,我们看到了一个比 + 运算符更优雅的语法,下面是一些你期待的特性:

模板占位符可以是任何 JavaScript 表达式,所以函数调用和四则运算等都是合法的。(甚至你还可以在一个模板字符串中嵌套另一个模板字符串。)

如果一个值不是字符串,它将被转换为字符串。例如,如果 action 是一个对象,那么该对象的 .toString() 将被调用,来将其转换为字符串。

如果你想在模板字符串中使用反引号,你需要使用反斜杠 \ 将其转义。

同样地,如果想在模板字符串中输出 ${ ,也需要使用反斜杠将其转义:\${ 或 $\{

模板字符串可以跨越多行:

$("#warning").html(<h1>Watch out!</h1> <p>Unauthorized hockeying can result in penalties of up to ${maxPenalty} minutes.</p>);

模板字符串中所有的空格、换行和缩进,都将被原样输出到结果字符串中。