267

Is there a character in JavaScript to break up a line of code so that it is read as continuous despite being on a new line?

Something like....

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

11 Answers 11

341

In your example, you can break the string into two pieces:

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

Or, when it's a string, as in your case, you can use a backslash as @Gumbo suggested:

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

Note that this backslash approach is not necessarily preferred, and possibly not universally supported (I had trouble finding hard data on this). It is not in the ECMA 5.1 spec.

When working with other code (not in quotes), line breaks are ignored, and perfectly acceptable. For example:

if(SuperLongConditionWhyIsThisSoLong
  && SuperLongConditionOnAnotherLine
  && SuperLongConditionOnThirdLineSheesh)
{
    // launch_missiles();
}
Sign up to request clarification or add additional context in comments.

10 Comments

Can you break up an if statement ?
But beware of the automatic semicolon insertion mechanism: Try to have return on one row and a "string" on the next one at the end of the function and you get undefined as a result.
Well...if you're going to ask a bunch of new questions not already asked, you've got to give us a chance to answer them. I updated my answer with an unsatisfying conjecture.
Beware of backslash. It will eat all blancks until it find a no-blank. So the example will "alert": Please Select fileto delete. If you want the white space between file and to, you should put it before de backslash.
SuperLongConditionWhyIsThisSoLong Because this will launch a missile and you wants to be extra safe
|
47

Put the backslash at the end of the line:

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

Edit    I have to note that this is not part of ECMAScript strings as line terminating characters are not allowed at all:

A 'LineTerminator' character cannot appear in a string literal, even if preceded by a backslash \. The correct way to cause a line terminator character to be part of the string value of a string literal is to use an escape sequence such as \n or \u000A.

So using string concatenation is the better choice.


Update 2015-01-05    String literals in ECMAScript5 allow the mentioned syntax:

A line terminator character cannot appear in a string literal, except as part of a LineContinuation to produce the empty character sequence. The correct way to cause a line terminator character to be part of the String value of a string literal is to use an escape sequence such as \n or \u000A.

4 Comments

ECMAScript5 allows it: "A line terminator character cannot appear in a string literal, except as part of a LineContinuation to produce the empty character sequence. The correct way to cause a line terminator character to be part of the String value of a string literal is to use an escape sequence such as \n or \u000A."
@Oriol Thanks for the note, updated the answer accordingly!
Is this problematic if the file was created in Windows. In other words lines terminated with \r\n instead of \n?
@AdamPlocher: No; "<CR><LF>" is considered a single line terminator character. See 262.ecma-international.org/5.1/#sec-7.3.
41

ECMAScript 6 introduced template strings:

Template strings are string literals allowing embedded expressions. You can use multi-line strings and string interpolation features with them.

For example:

alert(`Please Select file   
to delete`);

will alert:

Please Select file   
to delete

9 Comments

Wow awesome. To get these ` ` on the keyboard press SHIFT + ´ two times. On a german keyboard that key is near the backspace key.
@Nadu That depends on a keyboard. Mine has a ` key. Since it's a modifier it's not written directly. That's probably why you thought you should press it twice, but that will write two of them. Press spacebar to write only one.
Unbelievable that it took so long to allow multiline strings without fancy hacks... Question is: What will be used as line separators - a hardcoded char(s) or the line break char(s) of the document?
There is problem with ` ` in case when you want to do magnification of *.js file.
Consider, that still in march 2018 only 89% of global used browsers support template strings according to caniuse.com caniuse.com/#feat=template-literals
|
9

Break up the string into two pieces 

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

1 Comment

But do not forget to have a space at the end of first or the beginning of the second chunk ;)
5

Interesting to note. Tried:

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

And this worked. However, on accident!, there was a space character following the final backslash (all other backslashes were at the end of the line). And this caused an error in the javascript! Removing this space fixed the error, though.

This is in ADT for Android using Cordova.

2 Comments

Spent most of my day fighting this issue and I also discovered, thanks to you, that a space character after any of the slashes was causing my ionic app to not compile. Thank you!
Can't believe anyone commented that this will include whatever indentation was in the code as part of the string, so that the example becomes Some\n<4 spaces>string\n<4 spaces>wrapped\n<4 spaces>across\n<4 spaces>multiple lines.
2

You can break a long string constant into logical chunks and assign them into an array. Then do a join with an empty string as a delimiter.

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

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

Output will be:

  1. This is first part....2. This is second part.....3. Finishing here.

There's a slight performance hit this way but you gain in code readability and maintainability.

Comments

1

You can just use

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

That should work

Comments

0

The backslash operator is not reliable. Try pasting this function in your browser console:

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

and then run it. Because of the conventional (and correct) indentation within the function, two extra spaces will be included, resulting in someLongLineOfText ThatShouldNotBeBroken.

Even using backticks will not help in this case. Always use the concatenation "+" operator to prevent this type of issue.

Comments

-1

A good solution here for VSCode users, if a string breaking down into multiple lines causes the problem (I faced this when I had to test a long JWT token, and somehow using template literals didn't do the trick.)

Comments

-4

I tried a number of the above suggestions but got an ILLEGAL character warning in Chrome code inspector. The following worked for me (only tested in Chrome though!)

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

comes out like...

stuff on line 1
stuff on line 2

NOTE the double backslash!!...this seems to be important!

Comments

-8

No need of any manual break in code. Just add \n where you want to break.

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

This will show the alert like

Please select file 
to delete.

3 Comments

down voter, can u please tell the reason for downvote. This solutions works for me always.
I don't know who down voted or why; but just a guess: the op wanted to know how to extend a text literal across multiple lines of code, rather than how to insert a line break in the output.
That's just not what the OP was asking for. He wanted to know how to break long strings in his code, not in the UI.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.