为什么Math.sin`1`工作,Math.sin'1'没有

时间:2018-06-07 06:50:03

标签: javascript syntax tags

如果我在浏览器控制台中输入此表达式(带有重音符号):

Math.sin`1`

它将返回:

0.8414709848078965

但是如果我输入这个表达式(单引号):

Math.sin'1'

它将返回错误:

SyntaxError: Unexpected number

你能解释一下为什么会这样吗?

2 个答案:

答案 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。它不适用于其他字符串文字。