Nəzarət olunmayan (undeclared) dəyişənlər nədir?
sobes.tech Süni İntellekt
AI-dan cavab
JavaScript-də elan olunmamış dəyişənlər, var, let və ya const açar sözləri ilə elan edilməmiş, lakin ona dəyər təyin edilmiş dəyişənlərdir.
// Aydın elan
let elanOlunmuşDəyişən = "Mən elan olunmuşam";
// Qeyri-aydın təyin etmə (kısıtlamasız rejimdə elan olunmamış dəyişən yaradır)
// `'use strict'` rejimində bu ReferenceError xətasına səbəb olacaq
elanOlunmamışDəyişən = "Mən elan olunmamışam";
Elan olunmamış dəyişənlərin davranışı kodun icra rejimindən asılıdır:
- Kısıtlamasız rejim: Elan olunmamış dəyişənə dəyər təyin etmək, Window (browsers üçün) daxilində həmin adla qlobal dəyişən yaradır. Bu pis təcrübə sayılır, çünki qlobal ad sahəsini çirkləndirir və debug etməyi çətinləşdirir.
- Kısıtlamalı rejim (
'use strict'): Elan olunmamış dəyişənə dəyər təyin etmək,ReferenceErrorxətası verir. Bu davranış üstün tutulur, çünki təsadüfən qlobal dəyişənlərin yaranmasının qarşısını alır və daha proqnozlaşdırıla bilən kod təmin edir.
Elan olunmamış dəyişənin olub-olmadığını typeof ilə yoxlamaq mümkündür. Kısıtlamasız rejimdə, elan olunmamış dəyişən 'undefined' tipi ilə olacaq, eləcə də elan edilmiş, lakin başlanğıc dəyəri verilməmiş dəyişən kimi.
let başlanmışAmmaNəticəsiz;
// console.log(typeof başlanmışAmmaNəticəsiz); // => 'undefined'
// Kısıtlamasız rejimdə
// elanOlunmamışDəyişən = "Yoxlama";
// console.log(typeof elanOlunmamışDəyişən); // => 'undefined'
// Dəyişənin mövcudluğunu yoxlamaq üçün
if (typeof potensialElanOlunmamış !== 'undefined') {
// potensialElanOlunmamış ilə işləmək üçün kod
}
Elan olunmamış dəyişənlərin istifadəsi potensial səhvlərə səbəb olur və kodun dəstəyini çətinləşdirir. Hər zaman let, const və ya var ilə dəyişənləri açıq şəkildə elan etmək tövsiyə olunur (baxmayaraq ki, var öz xüsusiyyətlərinə malikdir və müasir kodda let və const üstün tutulur). 'use strict' rejiminin istifadəsi bu cür problemlərin qarşısını almaq üçün standart praktika hesab olunur.