Średnik dla bezpieczeństwa w IIFE
Niech teraz nasza funkcja wywołująca się od razu będzie nie z plusem na początku, ale opakowana w okrągłe nawiasy, w ten sposób:
(function() {
console.log(1); // wypisze 1
})();
Niech zmienna num będzie ustawiona na zewnątrz
funkcji:
let num = 1; // średnik jest
(function() {
console.log(num); // wypisze 1
})();
Załóżmy teraz, że zapomnieliśmy postawić średnika:
let num = 1
(function() {
console.log(num); //!! zwróci błąd
})();
Okazuje się, że taki kod zwróci błąd, ponieważ JavaScript postrzega naszą funkcję jako kontynuację polecenia z pierwszej linii.
Aby uniknąć takich problemów, przed wywołaniem funkcji od razu zawsze należy stawiać średnik, w ten sposób:
let num = 1
;(function() {
console.log(num); // wypisze 1
})();
Wydaje się, że problem jest nieco naciągany. W rzeczywistości tak nie jest. Może zaistnieć taka sytuacja, że na Twojej stronie podłączonych jest kilka skryptów z osobnych plików. W tym przypadku na końcu jednego pliku może brakować średnika i to automatycznie doprowadzi do problemu, jeśli drugi plik zaczyna się od wywołania funkcji od razu.
Dlatego, zawsze-zawsze stawiaj średnik przed wywołaniem funkcji od razu, nawet jeśli w danym momencie jesteś pewien, że problemów nie będzie. Mogą one pojawić się później.
Zastosujmy powyższe i wywołajmy funkcję od razu, stawiając na początku średnik:
;(function() {
console.log(1); // wypisze 1
})();
Określ, bez uruchamiania kodu, co zostanie wypisane w konsoli:
let str = 'str';
(function() {
console.log(1);
})();
Określ, bez uruchamiania kodu, co zostanie wypisane w konsoli:
let str = 'str'
(function() {
console.log(1);
})();