Bodkočiarka pre bezpečnosť v IIFE
Nech naša funkcia volaná na mieste začína nie plusom, ale je obalená okrúhlymi zátvorkami, takto:
(function() {
console.log(1); // vypíše 1
})();
Nech premenná num je definovaná mimo
funkcie:
let num = 1; // bodkočiarka je prítomná
(function() {
console.log(num); // vypíše 1
})();
Nech teraz zabudneme pridať bodkočiarku:
let num = 1
(function() {
console.log(num); //!! spôsobí chybu
})();
Ukazuje sa, že takýto kód spôsobí chybu, pretože JavaScript interpretuje našu funkciu ako pokračovanie príkazu v prvom riadku.
Aby sme sa vyhli takýmto problémom, pred volaním funkcie na mieste je vždy potrebné uviesť bodkočiarku, takto:
let num = 1
;(function() {
console.log(num); // vypíše 1
})();
Môže sa zdať, že problém je trochu nafúknutý. V skutočnosti to tak nie je. Môže nastať situácia, keď na vašej stránke sú pripojených niekoľko skriptov z rôznych súborov. V tom prípade na konci jedného súboru môže chýbať bodkočiarka a to automaticky spôsobí problém, ak druhý súbor začína volaním funkcie na mieste.
Preto vždy – vždy uvádzajte bodkočiarku pred volaním funkcie na mieste, aj keď momentálne ste si istí, že problémy nevzniknú. Môžu sa objaviť neskôr.
Aplikujme vyššie uvedené a zavolajme funkciu na mieste, pričom na začiatok pridáme bodkočiarku:
;(function() {
console.log(1); // vypíše 1
})();
Určite, bez spustenia kódu, čo sa vypíše do konzoly:
let str = 'str';
(function() {
console.log(1);
})();
Určite, bez spustenia kódu, čo sa vypíše do konzoly:
let str = 'str'
(function() {
console.log(1);
})();