Not having to use semicolons sounds nice, but in practice it can have terrible effects. E.g.: var x = function() { // something } // avoid polluting global scope: (function() { // Some initialization. })() This will call the function x with the anonymous function as its argument, and then call the result of that. There are more examples to that point, and many of them really aren't all that straightforward. So don't…
var x = function() {
// something
}
// avoid polluting global scope:
;(function() {
// Some initialization.
})()
;[1,2,3].forEach(...)
In practice those are the only places you'll see (and need) them. It has the extra benefit of disencouraging starting a line with a pre-increment, hacks or weird constructs (not talking of IIFEs of course), and making sure you're never calling a function or accessing properties by accident.