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