Semikolon for sikkerhed i IIFE
Lad nu vores omgående funktionsudtryk ikke starte med et plus, men være omsluttet af runde parenteser, sådan her:
(function() {
console.log(1); // vil udskrive 1
})();
Lad variablen num defineres udenfor
funktionen:
let num = 1; // semikolon er sat
(function() {
console.log(num); // vil udskrive 1
})();
Lad os nu antage, at vi glemte at sætte semikolon:
let num = 1
(function() {
console.log(num); //!! vil give en fejl
})();
Det viser sig, at sådan kode vil give en fejl, da JavaScript opfatter vores funktion som en fortsættelse af kommandoen i den første linje.
For at undgå sådanne problemer, skal man altid sætte et semikolon før kaldet af omgående funktionsudtryk, sådan her:
let num = 1
;(function() {
console.log(num); // vil udskrive 1
})();
Det kan synes, at problemet er en smule opstillet. Det er det faktisk ikke. Der kan opstå en situation, hvor du har flere scripts på din side, der inkluderes fra separate filer. I sådanne tilfælde kan der i slutningen af én fil være udeladt et semikolon, og det vil automatisk føre til et problem, hvis den anden fil begynder med et omgående funktionsudtryk.
Derfor skal du altid, altid sætte et semikolon før kaldet af et omgående funktionsudtryk, selv hvis du på nuværende tidspunkt er sikker på, at der ikke vil være problemer. De kan opstå bagefter.
Lad os anvende ovenstående og kalde et omgående funktionsudtryk ved at sætte et semikolon i begyndelsen:
;(function() {
console.log(1); // vil udskrive 1
})();
Bestem, uden at køre koden, hvad der vil blive udskrevet i konsollen:
let str = 'str';
(function() {
console.log(1);
})();
Bestem, uden at køre koden, hvad der vil blive udskrevet i konsollen:
let str = 'str'
(function() {
console.log(1);
})();