在Javascript字符串中奇怪地使用反斜杠

And*_*lly 3 javascript jquery multiline

我的一个同事在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>',
Run Code Online (Sandbox Code Playgroud)

我们对此字符串执行的唯一操作是在用户鼠标悬停时填充社交共享按钮容器:

self.html(obj.shareButtonsHtml);
Run Code Online (Sandbox Code Playgroud)

我知道反斜杠是JS中的转义字符.谁能解释为什么我的同事在这里使用它们?当然他不需要逃离回车或换线?他后来搬到另一家公司,所以我不能问他!

Cer*_*rus 5

他正在逃避换行符.

如果你想要多行字符串,则需要这样做,否则JS不会将下一行识别为字符串的一部分.

所以,是的,他确实"确实需要逃避回车或换线".这正是他在那里所做的.

您可以使用字符串连接在多行上传播字符串,但这意味着每次使用字符串时都需要额外的操作.性能差异不是很显着,主要是偏好问题.

多行蜇在JS中通常不起作用的原因是因为解释器(在大多数情况下是*);在代码行的末尾添加了一个代码,如果它不存在的话.这就是为什么它;是可选的,但它也打破了多行字符串.

*例外是对象/数组文字,;不会在那里添加,例如:

var obj = {
    a:1
}
Run Code Online (Sandbox Code Playgroud)