Pontosvesszõ a biztonságos IIFE-hez

Most tegyük fel, hogy az azonnal meghívott függvényünk ne pluszjellel kezdõdjön, hanem kerek zárójelekbe legyen becsomagolva, így:

javascript(function() {
  console.log(1); // kiírja 1-et
})();

Tegyük fel, hogy a num változó a függvényen kívül van definiálva:

javascriptlet num = 1; // pontosvesszõ van megadva

(function() {
  console.log(num); // kiírja 1-et
})();

Most tegyük fel, hogy elfelejtettük megadni a pontosvesszõt:

javascriptlet num = 1

(function() {
  console.log(num); //!! hibát jelez
})();

Kiderül, hogy ez a kód hibát fog jelezni, mivel a JavaScript a függvényünket az elsõ sor parancsának folytatásaként értelmezi.

Az ilyen problémák elkerülése érdekében az azonnal meghívott függvény elõtt mindig pontosvesszõt kell tenni, így:

javascriptlet num = 1

;(function() {
  console.log(num); // kiírja 1-et
})();

Úgy tûnhet, hogy a probléma kissé mesterkélt. Valójában nem az. Elõfordulhat olyan helyzet, hogy az oldalon több, különálló fájlokból származó szkript van betöltve. Ebben az esetben az egyik fájl végén lehet, hogy hiányzik a pontosvesszõ, és ez automatikusan problémához vezet, ha a második fájl egy azonnal meghívott függvénnyel kezdõdik.

Ezért mindig-mindig tegyen pontosvesszõt az azonnal meghívott függvény elé, még akkor is, ha jelenleg biztos benne, hogy nem lesz probléma. Azok késõbb is felmerülhetnek.

Alkalmazzuk a fentieket, és hívjuk meg a függvényt azonnal, az elejére pontosvesszõt téve:

javascript;(function() {
  console.log(1); // kiírja 1-et
})();
Задание 1

Határozza meg, kód futtatása nélkül, hogy mit ír ki a konzolra:

javascriptlet str = 'str';

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

Határozza meg, kód futtatása nélkül, hogy mit ír ki a konzolra:

javascriptlet str = 'str'

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