3 ms·
Why does nobody ever mention the obvious solution? Separate var statements. They're always correct, they copy without any editing, and the "var"s line up to sh
by asolove 14y ago
Why does nobody ever mention the obvious solution? Separate var statements.
They're always correct, they copy without any editing, and the "var"s line up to show that it's a block of assignments the same as commas or whitespace.
- chc 14y agoYou can only put var at the beginning of variable declarations, but there are many other places that commas are used as a separator. So that "solution" doesn't apply in general.
- asolove 14y agoI think I might have explained myself poorly. I'm suggesting using separate var statements for each assignment, e.g.: var a = 2; var b = 4; var c = { blah: "whatever" }; Leaving out a semicolon has no effect. They can be copied without any fuss. It's easy.
- ricardobeat 14y agoProblems with semi-colons usually arise in object usage. So your solution is very specific. x = {[ { id: 1, data: 0 }, { id: 2, data: 0 } ], [ { id: 3, data: 0 }, { id: 4, data: 0 } ]}
- slexaxton 14y agoMost people also apply this to object literals. There are no var statements in this situation.
- mnutt 14y agoWith separate var statements, you never end up with this situation: var foo = 1, bar = 2 baz = 3 In 90% of the cases the code will run the same whether or not there is a comma on line 2, but in the other 10% you will get burned in odd ways now that `baz` is a global variable.
- Isofarro 14y agoJS Lint is your friend in this case. It will log that * There's a missing semicolon on line 2 * There's a missing semicolon on line 3 * baz was being used before it was defined. That's just in a global context. When it's in a function you get a little more: * the baz line is indented too far - because it's being interpreted as a new statement. Sure, you could eyeball your code looking for this. Or just use an automated tool that'd do it for you
- andywhite37 14y agoSeparate vars is what I prefer to do, but JSLint actually recommends that you change multiple var statements to a single var with variables separated by commas (and with a semicolon at the end of course!). (And also all var declarations at the top of the function...).