Тачка зарез у безбедности у IIFE
Нека наша функција која се позива на месту сада не буде са знаком плус на почетку, већ омотана заградама, овако:
(function() {
console.log(1); // исписаће 1
})();
Нека се променљива num дефинише изван
функције:
let num = 1; // тачка зарез је постављена
(function() {
console.log(num); // исписаће 1
})();
Хајде сада да заборавимо да поставимо тачку зарез:
let num = 1
(function() {
console.log(num); //!! даће грешку
})();
Испада да ће овакав код дати грешку, јер JavaScript нашу функцију восприма како наставак наредбе из првог реда.
Да би се избегли такви проблеми, пред позив функције на месту увек је неопходно ставити тачку зарез, овако:
let num = 1
;(function() {
console.log(num); // исписаће 1
})();
Изгледа да је проблем помало извештачен. Заправо, није тако. Може се десити ситуација да на вашој страници буду укључене неколико скрипти из одвојених фајлова. У том случају на крају једног фајла може бити изостављена тачка зарез и то аутоматски доведе до проблема ако други фајл почиње позивом функције на месту.
Зато, увек-увек стављајте тачку зарез пред позив функције на месту, чак и ако сте тренутно сигурни да проблема неће бити. Они могу настати касније.
Применимо горе речено и позовимо функцију на месту, поставивши на почетку тачку зарез:
;(function() {
console.log(1); // исписаће 1
})();
Одредите, без покретања кода, шта ће се исписати у конзолу:
let str = 'str';
(function() {
console.log(1);
})();
Одредите, без покретања кода, шта ће се исписати у конзолу:
let str = 'str'
(function() {
console.log(1);
})();