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:

javascript(function() {
  console.log(1); // vypíše 1
})();

Nech premenná num je definovaná mimo funkcie:

javascriptlet num = 1; // bodkočiarka je prítomná

(function() {
  console.log(num); // vypíše 1
})();

Nech teraz zabudneme pridať bodkočiarku:

javascriptlet 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:

javascriptlet 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:

javascript;(function() {
  console.log(1); // vypíše 1
})();
Задание 1

Určite, bez spustenia kódu, čo sa vypíše do konzoly:

javascriptlet str = 'str';

(function() {
  console.log(1);
})();
Задание 2

Určite, bez spustenia kódu, čo sa vypíše do konzoly:

javascriptlet str = 'str'

(function() {
  console.log(1);
})();