【问题标题】:Why Math.sin`1` works and Math.sin'1' not [duplicate]为什么 Math.sin`1` 有效而 Math.sin'1' 无效
【发布时间】:2018-11-16 23:31:27
【问题描述】:

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

Math.sin`1`

它会返回:

0.8414709848078965

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

Math.sin'1'

它会返回错误:

SyntaxError: Unexpected number

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

【问题讨论】:

标签: javascript syntax tags


【解决方案1】:

这就是所谓的tagged template literal

fn`string`

假设fn 是一个函数,只会导致fnstring 作为第一个参数被调用。

当您要替换 ${ .. } 时,标记的模板文字函数会更有用。来自 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 }`);

【讨论】:

    【解决方案2】:

    tag`template literal`specifically part of the template literal syntax。它不适用于其他字符串文字。

    【讨论】:

      猜你喜欢
      • 2013-12-08
      • 2020-08-25
      • 1970-01-01
      • 1970-01-01
      • 2022-06-13
      • 1970-01-01
      • 1970-01-01
      • 2023-01-06
      • 2014-07-14
      相关资源
      最近更新 更多