如何在JavaScript中跨越多行代码打破字符串?

在JavaScript中是否有一个字符来分解代码行,以便尽管它在新的行上,它仍然被视为连续的?

之类的……

1. alert ( "Please Select file
2. \ to delete" );
343284 次浏览

在你的例子中,你可以把字符串分成两部分:

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

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

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

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

当处理其他代码(不加引号)时,换行符将被忽略,这是完全可以接受的。例如:

if(SuperLongConditionWhyIsThisSoLong
&& SuperLongConditionOnAnotherLine
&& SuperLongConditionOnThirdLineSheesh)
{
// launch_missiles();
}

把反斜杠放在行末:

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

编辑我必须指出,这是ECMAScript字符串部分,因为行结束字符根本不被允许:

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

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


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

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

你可以用

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

应该可以

把绳子掰成两段。

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

在代码中不需要任何手动中断。 只要在你想中断的地方加上\n。

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

这将显示警报

Please select file
to delete.

有趣的是。尝试:

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

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

这是在ADT为Android使用Cordova。

我尝试了上面的一些建议,但在Chrome代码检查器中得到了一个非法字符警告。下面的方法对我来说是有效的(不过只在Chrome中测试过!)

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

就像…

stuff on line 1
stuff on line 2

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

ECMAScript 6引入了模板字符串:

模板字符串是允许嵌入表达式的字符串字面量。 可以使用多行字符串和字符串插值功能 他们。< / p >

例如:

alert(`Please Select file
to delete`);

警告:

Please Select file
to delete

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

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


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

输出将是:

  1. 这是第一部分....。这是第二部分.....3。完成。

这种方式对性能有轻微的影响,但在代码可读性和可维护性方面有所收获。

这里有一个很好的解决方案 对于VSCode用户,如果字符串分解成多行会导致问题(当我不得不测试一个长JWT令牌时,我遇到过这个问题,不知为何使用模板字面量没有做到这一点。)

反斜杠操作符不可靠。尝试将这个函数粘贴到浏览器控制台:

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

然后运行它。由于函数内使用了常规的(正确的)缩进,因此将包含两个额外的空格,从而产生someLongLineOfText ThatShouldNotBeBroken

在这种情况下,即使使用反引号也无济于事。总是使用连词"+"操作员来防止这类问题。