რა არის არასახელმწიფო (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') გამოყენება არის სტანდარტული პრაქტიკა ამ პრობლემების თავიდან ასაცილებლად.