Ստորակետը IIFE-ում անվտանգության համար

Թող այժմ մեր անմիջապես կանչվող ֆունկցիան սկզբում գումարած չլինի, այլ փակվի կլոր փակագծերով, ահա այսպես.

javascript(function() {
  console.log(1); // կարտածի 1
})();

Թող num փոփոխությունը սահմանվի ֆունկցիայից դուրս.

javascriptlet num = 1; // ստորակետը դրված է

(function() {
  console.log(num); // կարտածի 1
})();

Ենթադրենք, մենք մոռացանք դնել ստորակետ.

javascriptlet num = 1

(function() {
  console.log(num); //!! կտա սխալ
})();

Ստացվում է, որ նման կոդը կտա սխալ, քանի որ JavaScript-ը մեր ֆունկցիան ընկալում է որպես առաջին տողի հրամանի շարունակություն։

Նման խնդիրներից խուսափելու համար, ֆունկցիայի անմիջական կանչից առաջ միշտ անհրաժեշտ է դնել ստորակետ, ահա այսպես.

javascriptlet num = 1

;(function() {
  console.log(num); // կարտածի 1
})();

Կարող է թվալ, թե խնդիրը որոշ չափով արհեստական է։ Իրականում, դա այդպես չէ։ Կարող է լինել այնպիսի իրավիճակ, երբ ձեր էջում միացվում են մի քանի տարբեր ֆայլերից սկրիպտներ։ Այս դեպքում մի ֆայլի վերջում կարող է բաց թողնվել ստորակետը, և դա ավտոմատ կհանգեցնի խնդրի, եթե երկրորդ ֆայլը սկսվում է ֆունկցիայի անմիջական կանչով։

Հետևաբար, միշտ-միշտ դրեք ստորակետ ֆունկցիայի անմիջական կանչից առաջ, նույնիսկ եթե այս պահին վստահ եք, որ խնդիրներ չեն լինի։ Դրանք կարող են առաջանալ ավելի ուշ։

Կիրառենք վերը նշվածը և կանչենք ֆունկցիան անմիջապես՝ սկզբում դնելով ստորակետ.

javascript;(function() {
  console.log(1); // կարտածի 1
})();
Задание 1

Որոշեք՝ առանց կոդը գործարկելու, թե ինչ կարտածվի կոնսոլում.

javascriptlet str = 'str';

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

Որոշեք՝ առանց կոդը գործարկելու, թե ինչ կարտածվի կոնսոլում.

javascriptlet str = 'str'

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