当前位置:嗨网首页>书籍在线阅读

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';

此时字符串就会换行了。然而,这两种方式都会将缩进包含在字符串中。例如,在以下字符串中, line2line3 之前除了换行还存在空格,而这可能不是我们想要的结果:

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!";