在JavaScript中是否有一个字符来分解代码行,以便尽管它在新的行上,它仍然被视为连续的?
之类的……
1. alert ( "Please Select file 2. \ to delete" );
在JavaScript中是否有一个字符来分解代码行,以便尽管它在新的行上,它仍然被视为连续的?
之类的……
1. alert ( "Please Select file 2. \ to delete" );
当前回答
在你的例子中,你可以把字符串分成两部分:
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");
你可以用
1: alert("Please select file" +
2: " to delete");
应该可以
反斜杠操作符不可靠。尝试将这个函数粘贴到浏览器控制台:
function printString (){
const s = "someLongLineOfText\
ThatShouldNotBeBroken";
console.log(s);
}
然后运行它。由于函数内的常规(正确)缩进,将包括两个额外的空格,导致一些elonglineoftext ThatShouldNotBeBroken。
在这种情况下,即使使用反引号也无济于事。总是使用连接“+”操作符来防止这种类型的问题。
您可以将长字符串常量分解为逻辑块并将它们分配到数组中。然后使用空字符串作为分隔符进行连接。
var stringArray = [
'1. This is first part....',
'2. This is second part.....',
'3. Finishing here.'
];
var bigLongString = stringArray.join('');
console.log(bigLongString);
输出将是:
这是第一部分....。这是第二部分.....3。完成。
这种方式对性能有轻微的影响,但在代码可读性和可维护性方面有所收获。
把反斜杠放在行末:
alert("Please Select file\
to delete");
我必须指出,这不是ECMAScript字符串的一部分,因为行结束字符是不允许的:
'LineTerminator'字符不能出现在字符串文本中,即使前面有反斜杠\。使行结束符成为字符串字面值字符串值的一部分的正确方法是使用转义序列,例如\n或\u000A。
所以使用字符串连接是更好的选择。
ECMAScript5中的字符串字面量允许上述语法:
行结束符不能出现在字符串文字中,除非作为LineContinuation的一部分以产生空字符序列。使行结束符成为字符串字面量String值的一部分的正确方法是使用转义序列,例如\n或\u000A。