Точка-запирка за безбедност во IIFE

Нека нашата функција што се повикува на место сега не биде со плус на почеток, туку обвиткана со кругли загради, вака:

javascript(function() {
  console.log(1); // ќе испише 1
})();

Нека променливата num се дефинира надвор од функцијата:

javascriptlet num = 1; // точка-запирка е ставена

(function() {
  console.log(num); // ќе испише 1
})();

Нека сега заборавивме да ставиме точка-запирка:

javascriptlet num = 1

(function() {
  console.log(num); //!! ќе даде грешка
})();

Излегува дека ваквиот код ќе даде грешка, бидејќи JavaScript ја перцепира нашата функција како продолжение на командата од првиот ред.

За да ги избегнете ваквите проблеми, пред повикувањето на функцијата на место секогаш неопходно е да се стави точка-запирка, вака:

javascriptlet num = 1

;(function() {
  console.log(num); // ќе испише 1
})();

Може да изгледа дека проблемот е донекаде извештачен. Всушност, тоа не е така. Може да се случи таква ситуација каде што на вашата страница вчитувате неколку скрипти од одделни датотеки. Во тој случај на крајот од една датотека може да биде испуштена точка-запирка и тоа автоматски ќе доведе до проблем ако втората датотека започнува со повик на функција на место.

Затоа, секогаш-секогаш ставајте точка-запирка пред повикување на функција на место, дури и ако во моментот сте сигурни дека нема да има проблеми. Тие може да се појават подоцна.

Да го примениме горенаведеното и да ја повикаме функцијата на место, ставајќи точка-запирка на почеток:

javascript;(function() {
  console.log(1); // ќе испише 1
})();
Задание 1

Определете, без да ја стартувате програмата, што ќе се испише во конзолата:

javascriptlet str = 'str';

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

Определете, без да ја стартувате програмата, што ќе се испише во конзолата:

javascriptlet str = 'str'

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