转义这些字符的目的是什么? [来自 Javascript & JQuery 书]

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

来自 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>";