我在Ruby中有以下代码。我想把这段代码转换成JavaScript。JS中的等效代码是什么?

text = <<"HERE"
This
Is
A
Multiline
String
HERE

当前回答

它不是非常优雅,但对我来说足够干净:

var myString = "First line" + "\n";
var myString = myString + "Second line" + "\n";
var myString = myString + "Third line" + "\n";

其他回答

你可以这样做。。。

var string = 'This is\n' +
'a multiline\n' + 
'string';

更新:

ECMAScript6(ES6)引入了一种新的文本类型,即模板文本。它们有很多特性,变量插值等等,但对于这个问题最重要的是,它们可以是多行的。

模板文本由反引号分隔:

var html = `
  <div>
    <span>Some HTML here</span>
  </div>
`;

(注意:我并不主张在字符串中使用HTML)

浏览器支持是可以的,但您可以使用更兼容的转发器。


ES5原始答案:

Javascript没有here文档语法。但是,您可以转义字面换行符,这很接近:

"foo \
bar"

实现这一点有多种方法

1.斜线拼接

  var MultiLine=  '1\
    2\
    3\
    4\
    5\
    6\
    7\
    8\
    9';

2.规则串联

var MultiLine = '1'
+'2'
+'3'
+'4'
+'5';

3.数组连接串联

var MultiLine = [
'1',
'2',
'3',
'4',
'5'
].join('');

就性能而言,斜杠串联(第一个)是最快的。

有关性能的更多详细信息,请参阅本测试用例

更新:

使用ES2015,我们可以利用其模板字符串功能。有了它,我们只需要使用反引号来创建多行字符串

例子:

 `<h1>{{title}}</h1>
  <h2>{{hero.name}} details!</h2>
  <div><label>id: </label>{{hero.id}}</div>
  <div><label>name: </label>{{hero.name}}</div>
  `

ES6允许您使用反勾号在多行上指定字符串。它被称为模板文字。这样地:

var multilineString = `One line of text
    second line of text
    third line of text
    fourth line of text`;

在NodeJS中使用backtick,Chrome、Firefox、Edge、Safari和Opera都支持它。

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Template_literals

总之,我在用户javascript编程(Opera 11.01)中尝试了两种方法:

这一个不起作用:在JavaScript中创建多行字符串这非常有效,我还找到了如何让它在Notepad++源代码视图中看起来很好:在JavaScript中创建多行字符串

所以我推荐Opera用户JS用户的工作方法。与作者所说的不同:

它不适用于萤火虫或歌剧;仅在IE、chrome和safari上。

它在歌剧11中确实有效。至少在用户JS脚本中。遗憾的是,我不能对个人答案发表评论,也不能对答案进行投票,我会立即这样做。如果可能,请有更高权限的人帮我做。