IIFE'de Güvenlik için Noktalı Virgül
Şimdi, hemen çağrılan fonksiyonumuzun başında artı işareti olmasın, onun yerine parantezlerle sarılmış olsun, işte şöyle:
(function() {
console.log(1); // 1 yazdıracak
})();
<num değişkeni fonksiyonun dışında tanımlansın:
let num = 1; // noktalı virgül var
(function() {
console.log(num); // 1 yazdıracak
})();
Şimdi noktalı virgülü koymayı unuttuğumuzu varsayalım:
let num = 1
(function() {
console.log(num); //!! hata verecek
})();
Görünüşe göre bu kod bir hata verecek, çünkü JavaScript fonksiyonumuzu ilk satırdaki komutun devamı olarak algılıyor.
Bu tür sorunlardan kaçınmak için, hemen çağrılan fonksiyondan önce her zaman noktalı virgül konulmalıdır, işte şöyle:
let num = 1
;(function() {
console.log(num); // 1 yazdıracak
})();
Sorunun biraz yapay olduğu düşünülebilir. Aslında durum öyle değil. Şöyle bir durum olabilir: sayfanıza ayrı dosyalardan birkaç betik (script) ekleniyor. Bu durumda, bir dosyanın sonunda noktalı virgül unutulmuş olabilir ve bu, ikinci dosya hemen çağrılan bir fonksiyonla başlıyorsa, otomatik olarak soruna yol açacaktır.
Bu nedenle, şu anda sorun olmayacağından emin olsanız bile, hemen çağrılan fonksiyondan önce her zaman, her zaman noktalı virgül koyun. Sorunlar daha sonra ortaya çıkabilir.
Yukarıda söyleneni uygulayalım ve hemen çağrılan fonksiyonu, başına noktalı virgül koyarak çağıralım:
;(function() {
console.log(1); // 1 yazdıracak
})();
Kodu çalıştırmadan, konsola ne yazdıracağını belirleyin:
let str = 'str';
(function() {
console.log(1);
})();
Kodu çalıştırmadan, konsola ne yazdıracağını belirleyin:
let str = 'str'
(function() {
console.log(1);
})();