Explanation of JSHint's Bad line breaking before '+' error

James McMahon picture James McMahon · Feb 28, 2013 · Viewed 37.6k times · Source

Can someone explain to me why JSHint complains about the following,

window.location.href = String1
    + '#'
    + Sting2
    + '='
    + String3;

With the error, Bad line breaking before '+' error

I understand that this error can be configured with the laxbreak option, which is described as

This option suppresses most of the warnings about possibly unsafe line breakings in your code. It doesn't suppress warnings about comma-first coding style. To suppress those you have to use laxcomma (see below).

This explanation is pretty terse and I am curious about why breaking lines this way is considered bad or lax in the first place.

Keep in mind I am not trying to start a holy war here, I am just looking for an objective answer about why the JSHint folks think this is bad, whether it is just a style preference they are injecting into their linter (I thought JSLint was the opinionated linter), or if there is something that can go wrong on certain interpreters when line breaking this way.

Answer

Barney picture Barney · Feb 28, 2013

It's a style guide to avoid statements that could be liable to assumptions about automatic semicolon insertion.

The idea is that you make it clear by the end of a line whether the expression ends there or could be continued on the next line.