In JavaScript, it is possible to declare multiple variables like this:
var variable1 = "Hello World!";
var variable2 = "Testing...";
var variable3 = 42;
...or like this:
var variable1 = "Hello World!",
variable2 = "Testing...",
variable3 = 42;
Is one method better/faster than the other?
My only, yet essential use for comma is in a for loop:
I went here to look up whether this is OK in JavaScript.
Even seeing it work, a question remained whether n is local to the function.
This verifies, n is local:
For a moment I wasn't sure, switching between languages.
I believe that before we started use ES6, approach with single var declaration was neither good nor bad (in case if you have linters and
'use strict'
. It was really taste preference. But now things changed for me. There are my thoughts in favour of multiline declaration:Now we have two new kinds of variables, and
var
became obsolete. It is good practice to useconst
everywhere untill you really needlet
. So quite often your code will contain variable declarations with assigment in the middle of the code, and because of block scoping you quite often will move variables between blocks in case of small changes. I think that it is more convinient to do that with multiline declarations.ES6 syntax became more diverse, we got destructors, template strings, arrow functions and optional assigments. When you heavily use all that features with single var declarations it hurts readability.
ECMAScript6 introducted destructuring assignment which works pretty nice:
[a, b] = [1, 2]
a
will equal1
andb
will equal2
.I think it's a matter of personal preference. I prefer to do it in the following way :
I think the first way (multiple vars) is best, as you can otherwise end up with this (from an application that uses Knockout), which is difficult to read in my opinion:
Although both are valid, using the second discourages inexperienced developers from placing var statements all over the place and causing hoisting issues. If there is only one var per function, at the top of the function, then it is easier to debug the code as a whole. This can mean that the lines where the variables are declared are not as explicit as some may like.
I feel that trade-off is worth it, if it means weaning a developer off of dropping 'var' anywhere they feel like.
People may complain about JSLint, I do as well, but a lot of it is geared not toward fixing issues with the language, but in correcting bad habits of the coders and therefore preventing problems in the code they write. Therefore:
"In languages with block scope, it is usually recommended that variables be declared at the site of first use. But because JavaScript does not have block scope, it is wiser to declare all of a function's variables at the top of the function. It is recommended that a single var statement be used per function." - http://www.jslint.com/lint.html#scope