有人能解释一下的原因吗
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]')