IIFE да учун хавфсизлик нуқта-вергули
Энди бизнинг жойида чақирилаётган функция бошланишида плюс билан эмас, балки қавслар билан ўралган бўлсин, мана бу йўл билан:
(function() {
console.log(1); // 1 ни чиқаради
})();
num ўзгарувчиси функциядан ташқарида
берилсин:
let num = 1; // нуқта-вергули турмоқда
(function() {
console.log(num); // 1 ни чиқаради
})();
Энди биз нуқта-вергулини қўйишни унутганмиз деб фараз қилайлик:
let num = 1
(function() {
console.log(num); //!! хатолик берadi
})();
Маълум бўладики, бундай код хатолик беради, чунки JavaScript бизнинг функциямизни биринчи сатр буйруғининг давоми деб ҳисоблайди.
Бундай муаммолардан қочиш учун, функцияни жойида чақиришдан олдин ҳар доим нуқта-вергулини қўйиш керак, мана бу йўл билан:
let num = 1
;(function() {
console.log(num); // 1 ни чиқаради
})();
Муаммо бир оз сунъий кўриниши мумкин. Аслида, бундай эмас. Сизнинг саҳифангизда турли файллардан бир нечта скрипт уланган бўлиши мумкин. Бундай ҳолатда, бир файлнинг охирида нуқта-вергули қолдирилиб қўйилиши ва иккинчи файл функцияни жойида чақириш билан бошланса, автомат равишда муаммога олиб келади.
Шу сабабдан, ҳар доим-ҳар доим функцияни жойида чақиришдан олдин нуқта-вергулини қўйинг, ҳатто айни пайтда сиз муаммо бўлмайди деб ишонchingiz бор бўлса ҳам. Улар кейин пайдо бўлиши мумкин.
Юқорида айтилганларни қўллаймиз ва функцияни жойида чақириб, бошланишида нуқта-вергулини қўйамиз:
;(function() {
console.log(1); // 1 ни чиқаради
})();
Кодни ишга туширмасдан, консолга нима чиқарилишини аниқланг:
let str = 'str';
(function() {
console.log(1);
})();
Кодни ишга туширмасдан, консолга нима чиқарилишини аниқланг:
let str = 'str'
(function() {
console.log(1);
})();