Sobes.tech
Middle+

IIFE менен var колдонуп, сырттан a жана b үчүн typeof чакырганда консольдо эмне чыгат? Катуу режимде жүрүм-турум кандай өзгөрөт?

sobes.tech AI

AIден жооп

Эгер ички IIFE ичинде өзгөрмөлөр var менен жарыяланган болсо, мисалы:

(function() {
  var a = 10;
  b = 20; // varсыз
})();

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

var менен жарыяланган a өзгөрмөсү функциянын ичинде жергиликтүү жана сырттан жеткиликтүү эмес, ошондуктан typeof a "undefined" болот.

var, let же const жок эле жарыяланган b өзгөрмөсү, нострикт режимде, глобалдык өзгөрмө түзөт. Ошондуктан, typeof b "number" болот.

Катуу режимде ('use strict';), белгиленбеген өзгөрмөгө маанини берүү аракеті (b = 20;) ReferenceError катага алып келет, жана глобалдык өзгөрмө түзүлбөйт. Ошентип, функциянын сыртында эки өзгөрмө да жеткиликтүү эмес, жана typeof a жана typeof b "undefined" болот (же алдан алдын ката чыгарышы мүмкүн).