javascript - 模板文字中的换行符和字符串文字中的 '\' 之间有什么区别?

标签 javascript ecmascript-6

我正在阅读 ES2015 规范中的模板文字,它允许您创建(除其他外)换行符,如下所示:

var brokenStr = `This is
    a broken
    string.`; //This is a broken string

我们还可以使用反斜杠 \ 字符来分隔字符串文字。

var anotherBrokenStr = 'This is \
    also a broken \
    string.'; //This is also a broken string.

两者之间有性能差异吗?哪一个被认为是最佳实践?

我已经搜索过了。

更新:

当我输出如下时,我得到一行。

document.getElementById('logger').innerHTML = brokenStr;

当我使用 document.write() 时,我会在 Chrome 检查器中看到以下内容:

This is     also a broken     string.

它将浏览器中的空白折叠为一个空格/

更新:更新:

模板文字似乎包含 \n 字符。那么,第一个例子和这个有什么区别,还是只是语法糖?

var anotherBrokenStr = 'This is \\n
    also a broken \\n
    string.'; 

最佳答案

这是我的 Node.js REPL 的输出,显示了两者之间的差异:

> `hello
... world`
'hello\nworld'
> 'hello\
... world'
'helloworld'

在第一种情况下,我们在 'hello''world' 之间得到一个换行符。在第二种情况下,我们不会。


编辑:亲爱的上帝,您完全困惑了。

HTML doesn't

respect newlines.


It doesn't matter how many newlines



you put in between your lines.




HTML will still print it





as a single line.

希望这能让事情变得清楚。

关于javascript - 模板文字中的换行符和字符串文字中的 '\' 之间有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39601573/

相关文章:

javascript - 如何从此 Javascript/jQuery 函数访问 HTML 属性?

javascript - 区分鼠标滚轮滚动还是滚动条滚动?

javascript - 将 ES5 函数添加到使用 babel 编译的 vuejs 应用程序?

JavaScript (ES6) : Named parameters and default values

javascript - 不使用 Ajax 从 header 加载 JSON 文件

javascript - .change() 选择已更改后进行页面刷新,如 CTRL + R

javascript - 如何检查变量是否是生成器函数? (例如函数*产量)

javascript - map 返回多组件

javascript - JSON列表优化

javascript - ES6 模块 : Export single class of static methods OR multiple individual methods