Sobes.tech
Middle+

Чӣ тавр дар консол вақте ки typeof a ва typeof b аз берун аз функсияи худидоракунандаи (IIFE) бо истифодаи var даъват карда мешавад, нишон дода мешавад? Дар режими қатъӣ чӣ гуна тағирот хоҳад буд?

sobes.tech AI

Ҷавоб аз AI

Агар дар дохили IIFE тағирёбҳо бо истифодаи var эълон карда шаванд, масалан:

(function() {
  var a = 10;
  b = 20; // бе var
})();

console.log(typeof a); // "undefined"
console.log(typeof b); // "number"

Тарафдори a, ки бо var дар дохили функсия эълон шудааст, маҳаллӣ аст ва аз хориҷ дастрас нест, бинобар ин typeof a "undefined" хоҳад буд.

Тарафдори b, ки бе var, let ё const эълон шудааст, дар режими ғайри қатъӣ, ба эҷоди тағирёбандаи глобалӣ оварда мерасонад. Аз ин рӯ, typeof b "number" хоҳад буд.

Дар режими қатъӣ ('use strict';), кӯшиши таъин кардани арзиш ба тағирёбандаи нодоштаро (b = 20;) хато ReferenceError ба вуҷуд меорад, ва тағирёбандаи глобалӣ эҷод намешавад. Бинобар ин, дар хориҷи функсия ҳарду тағирёбанда дастрас нестанд, ва typeof a ва typeof b "undefined" хоҳанд буд (ё пеш аз он хато ба вуҷуд меояд).