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š).