附加到标记模板(JavaScript)中参数/变量的Exp后缀

附加到标记模板(JavaScript)中参数/变量的Exp后缀,javascript,template-literals,exp,suffix,tagged-templates,Javascript,Template Literals,Exp,Suffix,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;

这是上面链接中的代码:


    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后缀以及如何调用具有相关前缀的变量的文档。有人知道我在哪里可以学到更多或者这里发生了什么吗?

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

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

您的模板有3个字符串块,由表达式分隔(表达式是
${}
,其中包含一些内容),这些块是
“是”
”和
”,因此,第一个参数,在本例中称为
字符串
,将是
[“那”,“是一个”,“是一个”]
。有两个表达式,
person
age
,因此它们将被放入后续参数中:第二个参数的值为
person
,第三个参数的值为
age
。这一点可能在以下片段中得到了最好的说明:

函数myTag(字符串,a,b,c){
控制台日志(a、b、c);
}
myTag`foo${1+1}bar${2+2}baz${3+3}`//日志2 4 6

谢谢您的留言。问题是它不是变量名的一部分,变量名只是person。返回的参数/文字名为personExp。JavaScript如何知道personExp正在引用名为person的变量。再次感谢您的见解。我很困惑。这完全是基于订购。第一个表达式,无论内容如何,都将进入第二个参数。第二个表达式,无论内容如何,都将进入第三个参数,依此类推
${person}
是第一个表达式,因此它将进入第二个参数,称为
personExp
。太棒了!我测试过了,现在可以看到了。非常感谢。