Semikolon for sikkerhet i IIFE
La oss nå si at vår umiddelbart påkalte funksjon ikke starter med et plusstegn, men er omsluttet av runde parenteser, slik:
(function() {
console.log(1); // vil skrive ut 1
})();
La variabelen num være definert utenfor
funksjonen:
let num = 1; // semikolon er satt
(function() {
console.log(num); // vil skrive ut 1
})();
La oss nå si at vi glemte å sette semikolon:
let num = 1
(function() {
console.log(num); //!! vil gi en feil
})();
Det viser seg at en slik kode vil gi en feil, fordi JavaScript oppfatter funksjonen vår som en fortsettelse av kommandoen på første linje.
For å unngå slike problemer, må man alltid sette et semikolon før påkalling av funksjon på stedet, slik:
let num = 1
;(function() {
console.log(num); // vil skrive ut 1
})();
Det kan virke som om problemet er noe konstruert. I virkeligheten er det ikke slik. Det kan oppstå en situasjon der du inkluderer flere skript fra separate filer på siden din. I dette tilfellet kan det hende at semikolon på slutten av én fil er utelatt, og dette vil automatisk føre til et problem hvis den andre filen starter med et umiddelbart funksjonskall.
Derfor bør du alltid-alltid sette semikolon før et umiddelbart funksjonskall, selv om du er sikker på at det ikke vil oppstå problemer akkurat nå. De kan dukke opp senere.
La oss bruke det som er nevnt ovenfor og kalle funksjonen umiddelbart, ved å sette semikolon i begynnelsen:
;(function() {
console.log(1); // vil skrive ut 1
})();
Bestem, uten å kjøre koden, hva som vil skrives ut i konsollen:
let str = 'str';
(function() {
console.log(1);
})();
Bestem, uten å kjøre koden, hva som vil skrives ut i konsollen:
let str = 'str'
(function() {
console.log(1);
})();