逃离这些字符的目的是什么?[来自Javascript和JQuery书]

What is the purpose of escaping these characters? [From Javascript & JQuery book]

本文关键字:来自 Javascript JQuery 字符 是什么 逃离      更新时间:2023-09-26

摘自Jon Duckett的《JavaScript和jQuery》一书中的"事件"一章。

这是代码:

var msg = '<div class='"header'"><a id='"close'" href="#">close X</a></div>';
msg += '<div><h2>System Maintenance</h2>';
msg += 'Our servers are being updated between 3 and 4 a.m. ';
msg += 'During this time, there may be minor disruptions to service.</div>';
var elNote = document.createElement('div');       
elNote.setAttribute('id', 'note');                
elNote.innerHTML = msg;                           
document.body.appendChild(elNote);               
function dismissNote() {                      
  document.body.removeChild(elNote);              
}
var elClose = document.getElementById('close');  
elClose.addEventListener('click', dismissNote, false);

我只是对开头感兴趣。为什么'"header'"'"close'"被转义,而href="#"没有?我在没有转义的情况下运行了代码,它仍然有效。

这个想法是教你使用转义引号,因为如果你写代码:

var msg = "<div class='"header'"><a id='"close'" href="'#">close X</a></div>";

这应该有效,但如果引号没有转义,它就不起作用。单引号表示里面的所有内容都是一个精确的引号,即引号(")被解释为一个字符串,而不是一个新字符串的开始(或结束)

此代码不起作用:

var msg = "<div class="header"><a id="close" href="#">close X</a></div>";