Punct și virgulă pentru siguranță în IIFE

Să presupunem că funcția noastră executată imediat nu începe cu un plus, ci este încadrată în paranteze rotunde, astfel:

javascript(function() {
  console.log(1); // va afișa 1
})();

Să presupunem că variabila num este definită în afara funcției:

javascriptlet num = 1; // punct și virgulă este prezent

(function() {
  console.log(num); // va afișa 1
})();

Să presupunem acum că am uitat să punem punct și virgulă:

javascriptlet num = 1

(function() {
  console.log(num); //!! va arunca o eroare
})();

Rezultă că un astfel de cod va arunca o eroare, deoarece JavaScript percepe funcția noastră ca o continuare a comenzii din prima linie.

Pentru a evita astfel de probleme, înaintea apelului funcției executate imediat este întotdeauna necesar să se pună punct și virgulă, astfel:

javascriptlet num = 1

;(function() {
  console.log(num); // va afișa 1
})();

Poate părea că problema este oarecum artificială. De fapt, nu este așa. Poate exista o situație în care pe pagina dvs. sunt conectate mai multe scripturi din fișiere separate. În acest caz, la sfârșitul unui fișier poate fi omis punctul și virgula și acest lucru automat va duce la o problemă dacă al doilea fișier începe cu un apel al unei funcții executate imediat.

Prin urmare, întotdeauna-puneți punct și virgulă înaintea apelului funcției executate imediat, chiar dacă sunteți siguri în momentul de față că nu vor fi probleme. Ele pot apărea mai târziu.

Să aplicăm cele menționate mai sus și să apelăm funcția executată imediat, punând la început punct și virgulă:

javascript;(function() {
  console.log(1); // va afișa 1
})();
Задание 1

Stabiliți, fără a rula codul, ce se va afișa în consolă:

javascriptlet str = 'str';

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

Stabiliți, fără a rula codul, ce se va afișa în consolă:

javascriptlet str = 'str'

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