这段代码给出错误:
var test = '1
2
3
4';
如果我想在javascript中很好地构建代码,如下所示:
var return = '
<div>
content
</div>
';
我该怎么做?
答案 0 :(得分:2)
无法跨越您所描述的线条。
如果您使用+
运算符并关闭字符串,则可以执行以下操作:
var retVal = '<div>' +
'content' +
'</div>';
答案 1 :(得分:1)
您的代码抛出错误的原因是因为Javascript使用automatic semicolon insertion
如果你想在多行中构造一个大字符串,你最好做这样的事情 - :
var returnValue = '<div>' +
'content' +
'</div>';
答案 2 :(得分:1)
如果您想编写多行JavaScript,可以使用\
,或者如果您想要换行,可以使用\n
。
对于多行来说是这样的:
var returnVal = '<div> \
content \
</div>';
或者如果你想在字符串的输出中换行:
var reutrnVal = '<div> \n content\n </div>'
或者您可以使用'+'连接:
var returnVal = '<div>' +
' content' +
'</div>';
答案 3 :(得分:0)
JavaScript不允许字符串中的文字换行符。(看起来这是错误的;例如,请参阅stackErr's answer。)有两种半合理的方法:使用{{ 1}}运算符(正如其他人所建议的那样),或者将你的行放在数组中,然后在数组上调用+
:
join('\n')
后者效率不高,但在大多数情况下这可能无关紧要。
如果你发现你正在做很多事情(以编程方式组装许多小的HTML代码段),那么值得研究一下Mustache这样的模板库。
答案 4 :(得分:0)
如果您使用\
结束一行,那么您的字符串可以在下一行继续。
var return = '\
<div>\
content\
</div>\
';
答案 5 :(得分:0)
在JavaScript中创建多行字符串有一个很好的技巧,它不涉及转义每行的换行符,如http://tomasz.janczuk.org/2013/05/multi-line-strings-in-javascript-and.html所述。基本上,您只定义一个只包含所需多行字符串的注释的函数,在该函数上调用toString
并删除注释,如下例所示:
var html = (function () {/*
<!DOCTYPE html>
<html>
<body>
<h1>Hello, world!</h1>
</body>
</html>
*/}).toString().match(/[^]*\/\*([^]*)\*\/\}$/)[1];