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]')
谁能解释一下为什么
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]')