14-多行字符串
3.8.2 多行字符串
在ES6之前,JavaScript对多行字符的支持勉强说得过去。单从语言规范上讲,JavaScript是允许在源代码行末对换行符进行转移的,但由于浏览器的兼容性问题,作者从来没有用过这个特性。ES6发布以后,这个特性就变得可用了,但还是有一些特殊的地方需要知道。注意,这些技术很可能在JavaScript控制台中不可用(比如在浏览器控制台中),所以必须把它们写在JavaScript文件去使用。对于由单引号和双引号引用起来的字符串,可以转义换行符:
const multiline = "line1\
line2";
如果以为 multiline 里面会另起一行,那么可能会很吃惊,因为行末的斜杠将换行符转义了,所以这里并没有出现新的一行。最终的结果将是 "line1line2" 。如果想要另起一行,可以这么做:
const multiline = 'line1\n\
line2';
重音符字符串也可以基本满足期望:
const multiline = 'line1
line2';
此时字符串就会换行了。然而,这两种方式都会将缩进包含在字符串中。例如,在以下字符串中, line2 和 line3 之前除了换行还存在空格,而这可能不是我们想要的结果:
const multiline = 'line1
line2
line3';
由于这个原因,通常会避免使用多行字符串的语法。如果使用它,要么选择放弃缩进来提高代码的可读性,要么在多行字符串中插入可能不想要的空格。如果确实要表示多行字符串,通常使用字符串连接:
const multiline = "line1\n" +
"line2\n" +
"line3";
这样缩进代码不但能提高代码的可读性,而且还能得到想要的结果。注意,字符串连接机制允许混合及匹配多种不同类型的字符串:
const multiline = 'Current temperature:\n' +
'\t${currentTemp}\u00b0C\n' +
"Don't worry...the heat is on!";