234

JavaScript 中是否有一个字符可以分解一行代码,以便尽管它位于新行上,但仍将其读取为连续的?

就像是....

1. alert("请选择文件   
2.\删除");
4

11 回答 11

306

在您的示例中,您可以将字符串分成两部分:

alert ( "Please Select file"
 + " to delete");

或者,当它是一个字符串时,就像你的情况一样,你可以使用@Gumbo 建议的反斜杠:

alert ( "Please Select file\
 to delete");

请注意,这种反斜杠方法不一定是首选的,也可能不是普遍支持的(我很难找到这方面的硬数据)。它不在ECMA 5.1 规范中。

使用其他代码(不在引号中)时,会忽略换行符,并且完全可以接受。例如:

if(SuperLongConditionWhyIsThisSoLong
  && SuperLongConditionOnAnotherLine
  && SuperLongConditionOnThirdLineSheesh)
{
    // launch_missiles();
}
于 2009-02-03T18:18:21.203 回答
44

将反斜杠放在行尾:

alert("Please Select file\
 to delete");

编辑    我必须注意,这不是ECMAScript 字符串的一部分,因为根本不允许行终止字符:

' LineTerminator ' 字符不能出现在字符串文字中,即使前面有反斜杠\。使行终止符成为字符串文字的字符串值的一部分的正确方法是使用转义序列,例如\nor \u000A

所以使用字符串连接是更好的选择。


更新 2015-01-05     ECMAScript5 中的字符串文字允许上述语法:

行终止符不能出现在字符串文字中,除非作为LineContinuation的一部分以产生空字符序列。使行终止符成为字符串文字的 String 值的一部分的正确方法是使用转义序列,例如\nor \u000A

于 2009-02-03T18:18:53.560 回答
38

ECMAScript 6 引入了模板字符串

模板字符串是允许嵌入表达式的字符串文字。您可以使用多行字符串和字符串插值功能。

例如:

alert(`Please Select file   
to delete`);

会提醒:

Please Select file   
to delete
于 2015-06-28T18:40:02.183 回答
7

把绳子分成两段 

alert ("Please select file " +
       "to delete");
于 2009-02-03T18:19:05.230 回答
5

有趣的是要注意。试过:

alert("Some \
    string \
    wrapped \
    across \
    mutliples lines.")

这奏效了。但是,意外!最后一个反斜杠后面有一个空格字符(所有其他反斜杠都在该行的末尾)。这导致了javascript中的错误!不过,删除此空间可修复错误。

这是在 ADT for Android 中使用 Cordova。

于 2013-03-17T07:06:57.227 回答
1

你可以使用

1:  alert("Please select file" +
2:        " to delete");

那应该工作

于 2009-02-03T18:18:54.730 回答
1

反斜杠运算符不可靠。尝试将此函数粘贴到浏览器控制台中:

function printString (){
  const s = "someLongLineOfText\
  ThatShouldNotBeBroken";
  console.log(s);
}

然后运行它。由于函数中的常规(和正确)缩进,将包含两个额外的空格,导致someLongLineOfText ThatShouldNotBeBroken.

在这种情况下,即使使用反引号也无济于事。始终使用连接“+”运算符来防止此类问题。

于 2020-10-05T10:08:18.593 回答
0

您可以将长字符串常量分解为逻辑块并将它们分配到数组中。然后join用一个空字符串作为分隔符。

var stringArray = [
  '1. This is first part....',
  '2. This is second part.....',
  '3. Finishing here.'
];

var bigLongString = stringArray.join('');
console.log(bigLongString);

输出将是:

  1. 这是第一部分....2。这是第二部分..... 3。到此结束。

这种方式对性能有轻微影响,但您会获得代码的可读性和可维护性。

于 2019-05-01T22:33:59.970 回答
0

对于 VSCode 用户来说,这是一个很好的解决方案,如果一个字符串分解成多行导致问题(当我不得不测试一个长 JWT 令牌时遇到了这个问题,并且不知何故使用模板文字并没有解决问题。)

于 2019-12-13T06:57:45.923 回答
-4

我尝试了上述一些建议,但在 Chrome 代码检查器中收到了非法字符警告。以下对我有用(虽然只在 Chrome 中测试过!)

alert('stuff on line 1\\nstuff on line 2);

出来像...

stuff on line 1
stuff on line 2

注意双反斜杠!!...这似乎很重要!

于 2013-07-31T09:27:26.887 回答
-6

无需任何手动中断代码。只需在要中断的位置添加 \n 即可。

alert ("Please Select file \n to delete");

这将显示警报,例如

Please select file 
to delete.
于 2012-07-04T13:24:12.157 回答