In several JavaScript libraries I saw this notation at the very beginning:
/**
* Library XYZ
*/
;(function () {
// ... and so on
While I'm perfectly comfortable with the "immediately executed function" syntax
(function(){...})()
I was wondering what the leading semicolon is for. All I could come up with is, that it is an insurance. That is, if the library is embedded in other, buggy code, it serves as an "the last statement ends here at the latest" kind of speed bump.
Has it got any other functionality?
It allows you to safely concatenate several JS files into one, to serve it quicker as one HTTP request.
The best answer was actually given in the question, so I will just write that down here for clarity:
The leading
;
in front of immediately-invoked function expressions is there to prevent errors when appending the file during concatenation to a file containing an expression not properly terminated with a;
.Best practice is to terminate your expressions with semicolons, but also use the leading semicolon as a safeguard.
This is referred to as a leading semicolon.
Its main purpose is to protect itself from preceding code that was improperly closed, which can cause problems. A semicolon will prevent this from happening. If the preceding code was improperly closed then our semicolon will correct this. If it was properly closed then our semicolon will be harmless and there will be no side effects.
Its good when you minify js codes. Prevent from unexpected syntax errors.
Source:
Javascript the Definitive Guide 6th edition