ES6 AirBnb Style Guidelines and Semicolons

From https://gitter.im/airbnb/javascript
September 3, 2015

justin808: Any advice on using the methods in lodash versus built-ins, such as map on Array?
I tend to always use lodash so as not to remember what JS has built-in, but maybe that’s not optimal?

goatslacker: lodash methods were faster than native methods last time I checked because they’re not spec compliant.
if you have something like lodash I guess it’s best to use it rather than not

justin808: I like that for consistency, simply using lodash.
@goatslacker if you were starting a new project, would you go modernized (no semicolons)? LIke this website offers: http://es6-features.org/ The default it shows is “modernized”.

justin808: Just saw this:

foo();
[1,2,3].forEach(bar);

you could do this:

foo()
;[1,2,3].forEach(bar)

goatslacker: I actually find it more difficult to remember when to use a semicolon than when not.

justin808: An Open Letter to JavaScript Leaders Regarding Semicolons does some explaining

goatslacker: yeah

justin808: I’m most familiar with ruby where you end a line with a comma and it continues

goatslacker: No, you don’t need semicolons. The eternal JavaScript debate on… | by Josh Perez | Medium
i wrote about it too

justin808: the JS rule using what’s on the next line…boy, that would take some getting used to.
@goatslacker do you work at AirBnb?

goatslacker: I do

justin808: I see, there’s a couple rules of when to begin a line with semicolons if you’re choosing the “modern” syntax.

Are the linters as helpful on the style of not using semicolons?

Basically, @goatslacker would you use GitHub - standard/standard: 🌟 JavaScript Style Guide, with linter & automatic code fixer for a new project, say you were going to create a new startup company.

goatslacker: yeah, I usually don’t begin lines with arithmetic operators, braces, a parenthesis, or a template literal.
nah, I’d use Airbnb style guide with semicolons and all
semicolons are popular amongst the JS community

justin808: From standard:

Never start a line with ( or [
This is the only gotcha with omitting semicolons – automatically checked for you!

goatslacker: that’s actually not the only gotcha, arithmetic operators also fail
and so do template literals

justin808: @goatslacker, thanks! Really psyched to get my projects on ES6 with these guidelines. ESLint seems to potentially support them very well.

goatslacker:

var a = 2
+1
console.log(a === 3)

yeah eslint and jscs are nice

justin808: Ruby would treat that totally differently. That’s what I don’t like.
Is there a jscs setup for the airbnb style guide?
Maybe this: jscs-dev/node-jscs@79ff109

goatslacker: yes, that works well

justin808: @goatslacker worth it to use both at same time? (eslint and jscs?)

goatslacker: yeah definitely

justin808 Thanks!

goatslacker: eslint catches bugs, jscs enforces style guide

justin808: I’m starting a new project, so looking forward to getting it started with linters, as it’s too hard to catch up later on a big project.

goatslacker: :+1: start off on the right foot

References:

If you want to see this in action, with JSCS and ESLint:

AirBnb now has a .eslintrc file, @geoffevason: