javascript在声明多行字符串时不是很方便,其实其他语言也有类似的问题,下面总结以下声明多行字符串时的方法:
1,直接声明
var lines = "line1\nline2\nline3\n";
console.log(lines);
这种声明方法采用\n转义符进行回车,执行的结果是:
line1
line2
line3
缺点是声明方式不直观,对于大量的文本定义很难用。
2,多行分开声明
var lines = "line1\n\
line2\n\
line3";
console.log(lines);
这种方法采用反斜杆\进行字符串连接,执行的结果是:
line1
line2
line3
没错,line2,line3前面有很多空白,这是因为声明时就是这样子的,这种声明方法还有一个缺点,就是每行的末尾都需要增加回车转义符\n,另外如果当文本中存在引号”时,还要进行转义,特别是有很多引号“时,使用起来就很不方便了。
3,使用数组定义,join连接
var lines = [”line1", "line2", "line3"].join("\n");
console.log(lines);
执行结果是:
line1
line2
line3
这种方法比较取巧,可以分开定义每行,回车转义符\n只需要写一次,算是比较方便,但是还是存在不直观的问题,还有也是每行中当存在引号”时还是需要进行转义。
4,利用函数注释及javascript语言的特性
Function.prototype.getMultilines() = function () {
var lines = new String(this);
lines = lines.substring(lines.indexOf("/*")+3, lines.lastIndexOf("*/"));
return lines;
}
var lines = function(){
/*
<div class="product">
<img src="/images/product.png"/>
</div>
*/
};
console.log(lines.getMultilines());
这种方法代码量稍微多了一些,执行效率低了一些,但是使用起来非常方便,非常直观,不用更改多行文本的本来样子,不需要进行特殊字符的转义。它利用了javascript可以返回函数完整源代码的这一特点,将源代码中的注释提取出来,而我们需要声明的多行文本就在注释中,非常巧妙。
用来用去还是第4种方法最好用,特别是当多行文本比较复杂时,没有其他方法比它更好用了。