如何在JavaScript中的多行代码中断字符串?

T.T*_*.T. 187 javascript line-breaks

JavaScript中是否有一个字符可以分解一行代码,这样即使在新行上也可以将其视为连续代码?

就像是....

1. alert ( "Please Select file   
2. \ to delete" );

Mic*_*ren 260

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

alert ( "Please Select file"
 + " to delete");
Run Code Online (Sandbox Code Playgroud)

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

alert ( "Please Select file\
 to delete");
Run Code Online (Sandbox Code Playgroud)

请注意,这种反斜杠方法不一定是首选方法,并且可能不受普遍支持(我无法在此找到硬数据).它符合ECMA 5.1规范.

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

if(SuperLongConditionWhyIsThisSoLong
  && SuperLongConditionOnAnotherLine
  && SuperLongConditionOnThirdLineSheesh)
{
    // launch_missiles();
}
Run Code Online (Sandbox Code Playgroud)

  • 但要注意自动分号插入机制:尝试返回一行,并在函数末尾的下一行返回"字符串",结果未定义. (17认同)
  • 好吧......如果你要问一堆尚未提出的新问题,你必须给我们一个回答它们的机会.我用一个令人不满意的猜想更新了我的答案. (3认同)
  • 小心反斜杠.它会吃掉所有的空白,直到找到一片空白.因此该示例将"警告":请选择要删除的文件.如果你想要文件和之间的空格,你应该把它放在de反斜杠之前. (2认同)

Gum*_*mbo 41

将反斜杠放在行尾:

alert("Please Select file\
 to delete");
Run Code Online (Sandbox Code Playgroud)

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

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

因此使用字符串连接是更好的选择.


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

除了作为生成空字符序列的LineContinuation的一部分之外,行终止符字符不能出现在字符串文字中.使行终止符字符成为字符串文字的String值的一部分的正确方法是使用转义序列,如\n\u000A.


Ori*_*iol 29

ECMAScript 6引入了模板字符串:

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

例如,

alert(`Please Select file   
to delete`);
Run Code Online (Sandbox Code Playgroud)

会警觉

Please Select file   
to delete
Run Code Online (Sandbox Code Playgroud)


Jas*_*yon 6

将字符串分成两部分 

alert ("Please select file " +
       "to delete");
Run Code Online (Sandbox Code Playgroud)

  • 但是不要忘记在第一块或第二块的开头有一个空格;) (9认同)

The*_*ere 5

值得注意的是。尝试过:

alert("Some \
    string \
    wrapped \
    across \
    mutliples lines.")
Run Code Online (Sandbox Code Playgroud)

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

这是使用 Cordova 的 Android ADT。

  • 不敢相信有人评论说这将包括代码中的任何缩进作为字符串的一部分,这样示例就变成 `Some\n<4spaces>string\n<4spaces>wrapped\n<4spaces>across \n<4 个空格>多行。` (5认同)