IIFE-də Təhlükəsizlik üçün Nöqtəli Vergül
İndi yerində çağrılan funksiyamızın əvvəlində plus işarəsi olmasın, əksinə dairəvi mötərizələrə alınmış olsun, belə:
(function() {
console.log(1); // 1 çap edəcək
})();
Qoy num dəyişəni funksiyanın xaricində
təyin olunsun:
let num = 1; // nöqtəli vergül var
(function() {
console.log(num); // 1 çap edəcək
})();
İndi fərz edək ki, nöqtəli vergülü qoymağı unutduq:
let num = 1
(function() {
console.log(num); //!! xəta verəcək
})();
Belə çıxır ki, bu kod xəta verəcək, çünki JavaScript bizim funksiyamızı ilk sətrin əmrinin davamı kimi qəbul edir.
Bu cür problemlərin qarşısını almaq üçün, yerində çağrılan funksiyadan əvvəl həmişə nöqtəli vergül qoymaq lazımdır, belə:
let num = 1
;(function() {
console.log(num); // 1 çap edəcək
})();
Belə görünə bilər ki, problem bir qədər sünidir. Əslində isə, elə deyil. Ola bilər ki, sizin səhifədə ayrı-ayrı fayllardan bir neçə skript birləşdirilir. Bu halda bir faylın sonunda nöqtəli vergül buraxıla bilər və bu, avtomatik olaraq problemə səbəb olacaq, əgər ikinci fayl yerində çağrılan funksiya ilə başlayırsa.
Ona görə də, yerində çağrılan funksiyadan əvvəl həmişə-həmişə nöqtəli vergül qoyun, hətta hazırda problem olmayacağına əmin olsanız belə. Onlar sonradan yarana bilər.
Yuxarıda deyiləni tətbiq edək və funksiyanı yerində çağıraq, əvvəlinə nöqtəli vergül qoyaraq:
;(function() {
console.log(1); // 1 çap edəcək
})();
Kodu işə salmadan müəyyən edin ki, konsola nə çap olunacaq:
let str = 'str';
(function() {
console.log(1);
})();
Kodu işə salmadan müəyyən edin ki, konsola nə çap olunacaq:
let str = 'str'
(function() {
console.log(1);
})();