Sobes.tech
Middle+

Ko tiks konsolē, izsaucot typeof a un typeof b ārpus pašizsaucamas funkcijas (IIFE), kas izmanto var? Kā mainīsies uzvedība stingrā režīmā?

sobes.tech AI

Atbilde no AI

Ja IIFE iekšienē tiek deklarētas mainīgās ar var, piemēram:

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

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

Mainīgā a, kas deklarēta ar var funkcijas iekšienē, ir lokāla un ārpus tās nepieejama, tāpēc typeof a atgriezīs "undefined".

Mainīgā b, kas deklarēta bez var, let vai const, nestrikta režīmā, noved pie globālas mainīgās izveides. Tādēļ typeof b atgriezīs "number".

Stingrā režīmā ('use strict';), mēģinājums piešķirt vērtību nedeklarētai mainīgajai (b = 20;) izraisīs ReferenceError, un globālā mainīgā netiks izveidota. Tādējādi, ārpus funkcijas abas mainīgās nebūs pieejamas, un typeof a un typeof b atgriezīs "undefined" (vai kļūda tiks izraisīta iepriekš).