Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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?

like image 421
chtenb Avatar asked Jan 08 '13 11:01

chtenb


2 Answers

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.

like image 113
bfavaretto Avatar answered Nov 13 '22 00:11

bfavaretto


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

like image 37
ThiefMaster Avatar answered Nov 12 '22 23:11

ThiefMaster