如果我在浏览器控制台中输入此表达式(带有重音符号):
Math.sin`1`
它将返回:
0.8414709848078965
但是如果我输入这个表达式(单引号):
Math.sin'1'
它将返回错误:
SyntaxError: Unexpected number
你能解释一下为什么会这样吗?
答案 0 :(得分:2)
这就是所谓的tagged template literal:
fn`string`
假设fn
是一个函数,只会导致fn
被调用string
作为第一个参数。
如果要进行${ .. }
替换,标记的模板文字函数会更有用。来自MDN示例:
var person = 'Mike';
var age = 28;
function myTag(strings, personExp, ageExp) {
var str0 = strings[0]; // "that "
var str1 = strings[1]; // " is a "
return str0 + personExp + str1 + (
ageExp > 99
? 'centenarian'
: 'youngster'
);
}
console.log(myTag`that ${ person } is a ${ age }`);
答案 1 :(得分:1)
abc()
是specifically part of the template literal syntax。它不适用于其他字符串文字。