Sobes.tech
Junior

რა არის არასახელმწიფო (undeclared) ცვლადები?

sobes.tech AI

პასუხი AI-სგან

JavaScript-ში უცნობი ცვლადები — ეს არის ცვლადები, რომლებიც არ არის გამოცხადებული var, let ან const სიტყვებით, მაგრამ მათთვის მიენიჭა მნიშვნელობა:

// ცხადი გამოცხადება
let declaredVariable = "მე ვარ გამოცხადებული";

// გაურკვეველი მინიჭება (შექმნის უცნობ ცვლადს არაგმატ რეჟიმში)
// მკაცრ რეჟიმში ('use strict') ეს გამოიწვევს შეცდომას ReferenceError
undeclaredVariable = "მე არ ვარ გამოცხადებული";

უცნობი ცვლადების ქცევა დამოკიდებულია კოდის შესრულების რეჟიმზე:

  • არაგმატ რეჟიმი: უცნობ ცვლადზე მნიშვნელობის მინიჭება ქმნის გლობალურ ცვლადს ამ სახელით Window-ში (ბრაუზერებისთვის). ეს ცუდი პრაქტიკაა, რადგან დაბინძურებს გლობალურ სივრცეს და ართულებს დათვალიერებას.
  • მკაცრი რეჟიმი ('use strict'): უცნობ ცვლადზე მნიშვნელობის მინიჭება გამოიწვევს ReferenceError შეცდომას. ეს სასურველი ქცევაა, რომელიც თავიდან აცილებს შემთხვევით გლობალური ცვლადების შექმნას და ხელს უწყობს უფრო პროგნოზირებად კოდს.

უცნობი ცვლადის შემოწმება შეიძლება typeof-ით. არაგმატ რეჟიმში უცნობი ცვლადი იქნება 'undefined' ტიპის, როგორც გამოცხადებული, მაგრამ არინიციალიზებული ცვლადი:

let initializedButUndefined;
// console.log(typeof initializedButUndefined); // => 'undefined'

// არაგმატ რეჟიმში
// undeclaredVariable = "ტესტი";
// console.log(typeof undeclaredVariable); // => 'undefined'

// ცვლადის არსებობის შემოწმება
if (typeof potentiallyUndeclaredVariable !== 'undefined') {
    // კოდი potentiallyUndeclaredVariable-ისთვის
}

უცნობი ცვლადების გამოყენება შეიძლება იყოს შეცდომების წყარო და გამარტივებს კოდის მხარდაჭერას. ყოველთვის რეკომენდებულია ცვლადების გამოცხადება let, const ან var-ით (თუმცა var-ს აქვს თავისი თავისებურებები და თანამედროვე კოდში უფრო ხშირად გამოიყენება let და const). მკაცრი რეჟიმის ('use strict') გამოყენება არის სტანდარტული პრაქტიკა ამ პრობლემების თავიდან ასაცილებლად.