Semikolon zur Sicherheit in IIFE
Nehmen wir an, unsere sofort aufgerufene Funktion beginnt nicht mit einem Pluszeichen, sondern ist in runde Klammern eingeschlossen, so:
(function() {
console.log(1); // gibt 1 aus
})();
Nehmen wir an, die Variable num wird außerhalb
der Funktion definiert:
let num = 1; // Semikolon ist gesetzt
(function() {
console.log(num); // gibt 1 aus
})();
Nehmen wir nun an, wir haben vergessen, das Semikolon zu setzen:
let num = 1
(function() {
console.log(num); //!! gibt einen Fehler aus
})();
Es stellt sich heraus, dass dieser Code einen Fehler verursacht, da JavaScript unsere Funktion als Fortsetzung des Befehls in der ersten Zeile interpretiert.
Um solche Probleme zu vermeiden, muss vor dem Aufruf einer sofort ausgeführten Funktion immer ein Semikolon gesetzt werden, so:
let num = 1
;(function() {
console.log(num); // gibt 1 aus
})();
Es mag scheinen, dass das Problem etwas gekünstelt ist. In Wirklichkeit ist es das nicht. Es kann vorkommen, dass mehrere Skripte aus separaten Dateien auf Ihrer Seite eingebunden werden. In diesem Fall könnte am Ende einer Datei ein Semikolon fehlen, und das führt automatisch zu einem Problem, wenn die zweite Datei mit einem Aufruf einer sofortigen Funktion beginnt.
Setzen Sie daher immer, immer ein Semikolon vor dem Aufruf einer sofortigen Funktion, auch wenn Sie im Moment sicher sind, dass es keine Probleme geben wird. Diese können später auftreten.
Wenden wir das oben Gesagte an und rufen die Funktion sofort auf, indem wir ein Semikolon am Anfang setzen:
;(function() {
console.log(1); // gibt 1 aus
})();
Bestimmen Sie, ohne den Code auszuführen, was in der Konsole ausgegeben wird:
let str = 'str';
(function() {
console.log(1);
})();
Bestimmen Sie, ohne den Code auszuführen, was in der Konsole ausgegeben wird:
let str = 'str'
(function() {
console.log(1);
})();