Junior
Funktsiya daxilində var istifadə edərək dəyişən elan etməyin hansı nəticələrə səbəb ola bilər?
sobes.tech Süni İntellekt
AI-dan cavab
Bir funksiyada var ilə elan olunan dəyişən funksional sahəyə malikdir. Bu, belə bir dəyişənin bütün funksiya daxilində mövcud olduğu və blok sahələrinin (məsələn, if və ya for daxilində) nəzərə alınmadığı anlamına gəlir.
Nəticələr:
- Dəyişənlərin üst-üstə yazılması: Bir blok daxilində
varilə elan olunan dəyişən, eyni funksiyada əvvəlcədən elan olunmuş və həmin blok xaricində olan eyni adlı dəyişəni üst-üstə yaza bilər. - Hoisting (yuxarı qaldırma):
varilə elan olunan dəyişənin bəyanatı funksiyanın əvvəlinə qaldırılır. Bu, dəyişəni bəyan etmədən əvvəl istifadə edə biləcəyiniz və həmin vaxt onun dəyərininundefinedolacağı anlamına gəlir. - Döngələrdə gözlənilməz davranış:
fordöngülərində, asinxron əməliyyatlar (məsələn,setTimeout) ilə,varilə elan olunan dəyişən, bütün asinxron callbacklar üçün döngünün son dəyərini alır, iterasiya anındakı dəyər deyil.
Hoisting və üst-üstə yazma nümunəsi:
function nümunəVarSahəsi() {
console.log(a); // undefined (hoisting səbəbindən)
var a = 10;
if (true) {
var a = 20; // Xarici dəyişəni üst-üstə yazır
console.log(a); // 20
}
console.log(a); // 20 (if blokundan alınan dəyər)
}
nümunəVarSahəsi();
Asinxron əməliyyatlar və döngü nümunəsi:
function nümunəDöngüVar() {
for (var i = 0; i < 3; i++) {
setTimeout(function() {
console.log(i); // 3, 3, 3 çıxarır (i, döngünün son dəyəri)
}, 100);
}
}
nümunəDöngüVar();
Bu xüsusiyyətlər səbəbindən, gözlənilməz vəziyyətlərin qarşısını almaq üçün, blok sahəsinə malik olan let və ya const istifadə etmək tövsiyə olunur.