取消javascript语义

时间:2018-01-02 00:27:23

标签: javascript

我正在进行" 30天香草JS编码挑战" :https://javascript30.com/

第一个练习中有代码行:



function playSound(e) {
    const audio = document.querySelector(`audio[data-key="${e.keyCode}"]`);
}




1 - 他为什么使用"反引号" (`)简单的单引号或双引号? ("或')?

2 - 大括号和美元符号在这里意味着什么? $ {e.keyCode}

我没有得到Javascript的这种语法......

谢谢!

4 个答案:

答案 0 :(得分:0)

这就是所谓的"模板文字"的语法,你可以找到它的文档here

答案 1 :(得分:0)

这些是template literals被后嘀嗒(重音符号)字符包围。模板文字可以包含占位符,由美元符号和大括号(${expression})括起来。占位符中的表达式将被计算并放入字符串中。在这种情况下,它们也有助于避免转义字符串文字中的引号。

因此,在此代码中,${e.keyCode}将成为实际的密钥代码并在字符串中进行插值。例如,如果e.keyCode65,则表达式将等同于document.querySelector('audio[data-key="65"]');

答案 2 :(得分:0)

Template Literals

  

模板文字是允许嵌入表达式的字符串文字。您可以使用多行字符串和字符串插值功能。他们被称为"模板字符串"在ES2015规范的先前版本中。

${e.keyCode}是字符串插值 - ${...}内的表达式(在本例中为e.keyCode)被内插到字符串中 - 它被替换为最终的评估结果字符串。

答案 3 :(得分:0)

这称为插值。不要害怕,这只是一种语法糖。

var str = "bar"
console.log("foo" + str + "baz"); // foobarbaz
console.log(`foo${str}baz`); // foobarbaz