我正在进行" 30天香草JS编码挑战" :https://javascript30.com/
第一个练习中有代码行:
function playSound(e) {
const audio = document.querySelector(`audio[data-key="${e.keyCode}"]`);
}

1 - 他为什么使用"反引号" (`)简单的单引号或双引号? ("或')?
2 - 大括号和美元符号在这里意味着什么? $ {e.keyCode}
我没有得到Javascript的这种语法......
谢谢!
答案 0 :(得分:0)
这就是所谓的"模板文字"的语法,你可以找到它的文档here
答案 1 :(得分:0)
这些是template literals被后嘀嗒(重音符号)字符包围。模板文字可以包含占位符,由美元符号和大括号(${expression}
)括起来。占位符中的表达式将被计算并放入字符串中。在这种情况下,它们也有助于避免转义字符串文字中的引号。
因此,在此代码中,${e.keyCode}
将成为实际的密钥代码并在字符串中进行插值。例如,如果e.keyCode
为65
,则表达式将等同于document.querySelector('audio[data-key="65"]');
答案 2 :(得分:0)
模板文字是允许嵌入表达式的字符串文字。您可以使用多行字符串和字符串插值功能。他们被称为"模板字符串"在ES2015规范的先前版本中。
${e.keyCode}
是字符串插值 - ${...}
内的表达式(在本例中为e.keyCode
)被内插到字符串中 - 它被替换为最终的评估结果字符串。
答案 3 :(得分:0)
这称为插值。不要害怕,这只是一种语法糖。
var str = "bar"
console.log("foo" + str + "baz"); // foobarbaz
console.log(`foo${str}baz`); // foobarbaz