我的一位同事在 JS 对象中设置属性的字符串值时使用了反斜杠:
shareButtonsHtml : '\
<span class="share-fb">\
<a href="#" class="fb-share"><span class="fb-share-icon"></span>Share</a>\
<span class="fb-share-count"><i></i><u></u>0</span>\
</span>\
<div class="share-twitter"> \
<iframe class="share-twitter-iframe" \
allowtransparency="true" frameborder="0" scrolling="no" \
src="https://platform.twitter.com/widgets/tweet_button.html" \
style="width:130px; height:20px;"></iframe> \
</div> \
<div class="share-google"> \
<div class="g-plusone" data-size="small" data-annotation="none"></div> \
</div>',
我们对这个字符串所做的唯一事情就是当用户将鼠标悬停在社交共享按钮容器上时填充它们:
self.html(obj.shareButtonsHtml);
我知道反斜杠是JS中的转义字符。谁能解释为什么我的同事在这里使用它们?他肯定不需要逃避回车或换行符吗?他已经跳槽到另一家公司了,所以我不能问他!
他正在转义换行符。
如果你想要多行字符串,这是必需的,否则 JS 不会将下一行识别为字符串的一部分。
所以,是的,他确实“需要逃避回车或换行符”。这正是他在那里所做的。
您可以使用字符串串联将字符串分布在多行中,但这意味着每次使用字符串时都会进行额外的操作。性能差异不是很大,主要是偏好问题。
多行字符串通常在 JS 中不起作用的原因是,解释器(在大多数情况下*)会在代码行末尾添加一个
;
(如果尚不存在)。这就是为什么 ;
是可选的,但它也会破坏多行字符串。
* 一个例外是对象/数组文字,
;
不会添加到那里,例如:
var obj = {
a:1
}
这里的反斜杠用于转义换行符。例如,它也可以在命令行中使用。
这只是允许他在多行上定义字符串(
\
正在转义“新行”字符)。