Semikolon for sikkerhed i IIFE

Lad nu vores omgående funktionsudtryk ikke starte med et plus, men være omsluttet af runde parenteser, sådan her:

javascript(function() {
  console.log(1); // vil udskrive 1
})();

Lad variablen num defineres udenfor funktionen:

javascriptlet num = 1; // semikolon er sat

(function() {
  console.log(num); // vil udskrive 1
})();

Lad os nu antage, at vi glemte at sætte semikolon:

javascriptlet num = 1

(function() {
  console.log(num); //!! vil give en fejl
})();

Det viser sig, at sådan kode vil give en fejl, da JavaScript opfatter vores funktion som en fortsættelse af kommandoen i den første linje.

For at undgå sådanne problemer, skal man altid sætte et semikolon før kaldet af omgående funktionsudtryk, sådan her:

javascriptlet num = 1

;(function() {
  console.log(num); // vil udskrive 1
})();

Det kan synes, at problemet er en smule opstillet. Det er det faktisk ikke. Der kan opstå en situation, hvor du har flere scripts på din side, der inkluderes fra separate filer. I sådanne tilfælde kan der i slutningen af én fil være udeladt et semikolon, og det vil automatisk føre til et problem, hvis den anden fil begynder med et omgående funktionsudtryk.

Derfor skal du altid, altid sætte et semikolon før kaldet af et omgående funktionsudtryk, selv hvis du på nuværende tidspunkt er sikker på, at der ikke vil være problemer. De kan opstå bagefter.

Lad os anvende ovenstående og kalde et omgående funktionsudtryk ved at sætte et semikolon i begyndelsen:

javascript;(function() {
  console.log(1); // vil udskrive 1
})();
Задание 1

Bestem, uden at køre koden, hvad der vil blive udskrevet i konsollen:

javascriptlet str = 'str';

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

Bestem, uden at køre koden, hvad der vil blive udskrevet i konsollen:

javascriptlet str = 'str'

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