Puntkomma voor veiligheid in IIFE
Laten we nu ervan uitgaan dat onze direct uitgevoerde functie niet met een plus begint, maar tussen ronde haakjes staat, zoals hier:
(function() {
console.log(1); // geeft 1 weer
})();
Stel dat de variabele num buiten
de functie wordt gedefinieerd:
let num = 1; // puntkomma staat er
(function() {
console.log(num); // geeft 1 weer
})();
Stel nu dat we vergeten zijn de puntkomma te plaatsen:
let num = 1
(function() {
console.log(num); //!! geeft een foutmelding
})();
Het blijkt dat deze code een foutmelding geeft, omdat JavaScript onze functie opvat als een voortzetting van de opdracht op de eerste regel.
Om dergelijke problemen te voorkomen, moet voor de aanroep van een direct uitgevoerde functie altijd een puntkomma worden geplaatst, zoals hier:
let num = 1
;(function() {
console.log(num); // geeft 1 weer
})();
Het lijkt misschien een ietwat verzonnen probleem. Dat is het echter niet. Het kan voorkomen dat er meerdere scripts van aparte bestanden op je pagina worden geladen. In dat geval kan aan het einde van het ene bestand de puntkomma zijn weggelaten en dit leidt automatisch tot een probleem als het tweede bestand begint met een directe functie-aanroep.
Plaats daarom altijd, altijd een puntkomma voor de aanroep van een direct uitgevoerde functie, zelfs als je op dit moment zeker weet dat er geen problemen zullen zijn. Die kunnen later ontstaan.
Laten we het bovenstaande toepassen en de functie direct aanroepen, waarbij we een puntkomma aan het begin plaatsen:
;(function() {
console.log(1); // geeft 1 weer
})();
Bepaal, zonder de code uit te voeren, wat er in de console wordt weergegeven:
let str = 'str';
(function() {
console.log(1);
})();
Bepaal, zonder de code uit te voeren, wat er in de console wordt weergegeven:
let str = 'str'
(function() {
console.log(1);
})();