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:
(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:
let num = 1; // pontosvesszõ van megadva
(function() {
console.log(num); // kiírja 1-et
})();
Most tegyük fel, hogy elfelejtettük megadni a pontosvesszõt:
let 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:
let 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:
;(function() {
console.log(1); // kiírja 1-et
})();
Határozza meg, kód futtatása nélkül, hogy mit ír ki a konzolra:
let str = 'str';
(function() {
console.log(1);
})();
Határozza meg, kód futtatása nélkül, hogy mit ír ki a konzolra:
let str = 'str'
(function() {
console.log(1);
})();