这段代码给出了错误:
var test = '1
2
3
4';
如果我想用 javascript 很好地构造代码怎么办,如下所示:
var return = '
<div>
content
</div>
';
我怎么做?
这段代码给出了错误:
var test = '1
2
3
4';
如果我想用 javascript 很好地构造代码怎么办,如下所示:
var return = '
<div>
content
</div>
';
我怎么做?
不可能像您描述的那样跨越行。
如果您使用+
运算符并关闭您的字符串,您可以执行以下操作:
var retVal = '<div>' +
'content' +
'</div>';
如果你想编写多行 JavaScript,你可以使用\
,或者如果你想换行,你可以使用\n
.
所以对于多行是这样的:
var returnVal = '<div> \
content \
</div>';
或者如果你想在字符串的输出中换行:
var reutrnVal = '<div> \n content\n </div>'
或者您可以使用“+”连接:
var returnVal = '<div>' +
' content' +
'</div>';
您的代码引发错误的原因是因为 Javascript 使用自动分号插入
如果你想在多行中构造一个大字符串,你最好做这样的事情 - :
var returnValue = '<div>' +
'content' +
'</div>';
JavaScript 不允许字符串中的文字换行符。(看起来那是错误的;例如,请参见stackErr 的答案。)有两种半合理的方法:使用+
运算符(正如其他人所建议的那样),或者将您的行放入数组中,然后调用join('\n')
数组:
var return = [
'<div>',
' content',
'</div>'
].join('\n');
后者并不是很有效,但在大多数情况下这可能并不重要。
如果您发现您经常这样做(以编程方式组装许多小的 HTML 片段),那么值得研究一个模板库,例如Mustache。
如果您以 a 结束一行\
,那么您的字符串可以在下一行继续。
var return = '\
<div>\
content\
</div>\
';
在 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];