Tačka zarez za bezbednost u IIFE
Neka sada naša funkcija koja se poziva na mestu ne počinje sa plusom, već je obavijena oblim zagradama, ovako:
(function() {
console.log(1); // ispisaće 1
})();
Neka se promenljiva num definiše izvan
funkcije:
let num = 1; // tačka zarez je stavljena
(function() {
console.log(num); // ispisaće 1
})();
Hajde sada da zaboravimo da stavimo tačku zarez:
let num = 1
(function() {
console.log(num); //!! izbaciće grešku
})();
Ispostavlja se da će ovakav kod izbaciti grešku, pošto JavaScript našu funkciju doživljava kao nastavak komande iz prvog reda.
Da bismo izbegli takve probleme, pre poziva funkcije na mestu uvek je potrebno staviti tačku zarez, ovako:
let num = 1
;(function() {
console.log(num); // ispisaće 1
})();
Može se učiniti da je problem pomalo nategnut. U stvarnosti, nije tako. Može se desiti situacija da na vašoj stranici postoje nekoliko skripti iz posebnih fajlova. U tom slučaju na kraju jednog fajla može nedostajati tačka zarez i to automatski dovodi do problema, ako drugi fajl počinje sa pozivom funkcije na mestu.
Zato, uvek-uvek stavljajte tačku zarez pre poziva funkcije na mestu, čak i ako ste u ovom trenutku sigurni da problema neće biti. Oni se mogu pojaviti kasnije.
Primenimo gore rečeno i pozovimo funkciju na mestu, stavljajući na početku tačku zarez:
;(function() {
console.log(1); // ispisaće 1
})();
Odredite, bez pokretanja koda, šta će biti ispisano u konzolu:
let str = 'str';
(function() {
console.log(1);
})();
Odredite, bez pokretanja koda, šta će biti ispisano u konzolu:
let str = 'str'
(function() {
console.log(1);
})();