chtenb
chtenb

Reputation: 16184

Why does jshint complain about linebreak within expression?

When passing the following code to jshint, it considers the linebreak in the if-condition to be bad, saying "Bad line breaking before '&&'."

if (1 == 1 
        && true) {
    console.log("hello world");
}

However, having the linebreak after '&&' is fine.

if (1 == 1 && 
        true) {
    console.log("hello world");
}

Why does jshint consider the first to be wrong and the latter to be right?

Upvotes: 18

Views: 9401

Answers (2)

bfavaretto
bfavaretto

Reputation: 71908

According to a discussion on GitHub:

This may cause problems like semi colon insertion and old javascript parsers breaking. Please check a large range of browsers.

This check can be disabled with laxbreak:true.

The laxbreak option is on its way to deprecation, but I'm not sure if the default jshint behavior will change.

Upvotes: 14

ThiefMaster
ThiefMaster

Reputation: 318478

The creator of JSHint probably doesn't like this kind of wrapping and prefers the && in the first line which seems to be much more common:

The primary reasoning behind this convention is that the operator makes it clear that the line is a continuation of the preceding line. With the operator before the line break, this is much harder to spot.

Actually there's an issue about exactly what you are asking about on Github: https://github.com/jshint/jshint/issues/557

Upvotes: 3

Related Questions