Javascript 字符串文字语法规则

Javascript string literal syntax rules

谁能解释一下为什么

const btn1 = document.querySelector('input[id="btn"]')

要求我使用 ('input[id="btn"]') 而不是 ("input[id="btn"]")('input[id='btn']')

因为 JavaScript 引擎需要能够明确地确定字符串文字的开始和结束位置。

如果在字符串中允许使用与字符串定界符相同的未转义字符,解释器将如何确定该字符是否在那里终止字符串,或者是否将其解释为文字 '(或")成为字符串的一部分?

要使 JavaScript 源文本的明确评估成为可能,需要严格的句法规则。 (但是字符串转义非常简单,并且对大多数编程语言都很常见。)学习一次,对于任何一种语言,您都可能非常适合了解它如何在许多其他语言中工作。在 JS 中,与许多更复杂的构造(如 async/await)相比,它真的没有那么难。

您可以删除属性选择器上的引号以防止出现愚蠢的格式规则:

const btn1 = document.querySelector('input[id=btn]')