4 回答
TA贡献1906条经验 获得超3个赞
这种模式text = <<"HERE" This Is A Multiline String HERE在js中不可用(我记得在我很好的旧Perl时代使用它)。
为了保持对复杂或长多行字符串的监督,我有时使用数组模式:
var myString =
['<div id="someId">',
'some content<br />',
'<a href="#someRef">someRefTxt</a>',
'</div>'
].join('\n');
或者匿名模式已经显示(转义换行符),这可能是代码中的一个丑陋的块:
var myString =
'<div id="someId"> \
some content<br /> \
<a href="#someRef">someRefTxt</a> \
</div>';
这是另一个奇怪但有效的'技巧' 1:
var myString = (function () {/*
<div id="someId">
some content<br />
<a href="#someRef">someRefTxt</a>
</div>
*/}).toString().match(/[^]*\/\*([^]*)\*\/\}$/)[1];
外部编辑:jsfiddle
ES20xx支持使用模板字符串跨多行生成字符串:
let str = `This is a text
with multiple lines.
Escapes are interpreted,
\n is a newline.`;
let str = String.raw`This is a text
with multiple lines.
Escapes are not interpreted,
\n is not a newline.`;
TA贡献1811条经验 获得超4个赞
您可以在纯JavaScript中使用多行字符串。
此方法基于函数的序列化,该函数被定义为依赖于实现。它在大多数浏览器中都有效(见下文),但不能保证它将来仍能使用,所以不要依赖它。
使用以下功能:
function hereDoc(f) { return f.toString(). replace(/^[^\/]+\/\*!?/, ''). replace(/\*\/[^\/]+$/, '');}
你可以在这里 - 像这样的文件:
var tennysonQuote = hereDoc(function() {/*! Theirs not to make reply, Theirs not to reason why, Theirs but to do and die */});
该方法已在以下浏览器中成功测试过(未提及=未测试):
IE 4 - 10
Opera 9.50 - 12(不是9-)
Safari 4 - 6(不是3-)
Chrome 1 - 45
Firefox 17 - 21(不是16-)
Rekonq 0.7.0 - 0.8.0
Konqueror 4.7.4不支持
但是要小心你的缩放器。它往往会删除评论。对于YUI压缩器,/*!
将保留以(与我使用的)相似的注释。
我认为真正的解决方案是使用CoffeeScript。
添加回答
举报