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" (ან ადრე გამოიწვევს შეცდომას).