1

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Template_literals#Tagged_templates

这是上面链接中的代码:


    let person = 'Mike';
let age = 28;

function myTag(strings, personExp, ageExp) {
  let str0 = strings[0]; // "That "
  let str1 = strings[1]; // " is a "
  let str2 = strings[2]; // "."

  let ageStr;
  if (ageExp > 99){
    ageStr = 'centenarian';
  } else {
    ageStr = 'youngster';
  }

  // We can even return a string built using a template literal
  return `${str0}${personExp}${str1}${ageStr}${str2}`;
}

let output = myTag`That ${ person } is a ${ age }.`;

console.log(output);
// That Mike is a youngster.

没有与 Exp 后缀相关的文档以及它如何能够调用具有相关前缀的变量。任何人都知道我可以在哪里了解更多信息或这里发生了什么?

4

1 回答 1

1

Exp后缀并不特殊,它只是变量名的一部分(它是表达式的缩写)。从您包含的 MDN 链接中:

标记函数的第一个参数包含一个字符串值数组。其余参数与表达式有关。

你的模板有 3 个由表达式分隔的字符串块(一个表达式${}里面有一些东西),这些块是"That "," is a ""."所以,strings在这种情况下调用的第一个参数是["That ", " is a ", "."]. 有两个表达式personage,因此它们将被放入后续参数中:第二个参数的值为person,第三个参数的值为age。这段代码片段可能最好地说明了这一点:

function myTag(strings, a, b, c) {
    console.log(a, b, c);
}

myTag`foo ${1 + 1} bar ${2 + 2} baz ${3 + 3}` // logs 2 4 6
于 2020-12-20T01:46:59.187 回答