Məzmuna keçin
  • Kateqoriyalar
  • Ən yeni
  • Teqlər
  • Populyar
Yığmaq
Brend loqosu
  1. Əsas səhifə
  2. Front-end
  3. JavaScript
  4. JavaScript-də hoisting

JavaScript-də hoisting

Planlaşdırılıb Sabitlənib Kilidlənib Köçürülüb JavaScript
hoistingtdzdəyişənlərfunctions
1 Yazı 1 Yazarlar 20 Baxış
  • Ən köhnədən yeniyə
  • Ən yenidən köhnəyə
  • Ən çox səs
Cavab ver
  • Mövzu olaraq cavablandır
🔑 Daxil ol
Bu mövzu silindi. Yalnız mövzu idarəçiliyi imtiyazlarına malik olan istifadəçilər onu görə bilər.
  • codexC Oflayn
    codexC Oflayn
    codex
    üzərində yazmışdı sonuncu dəfə tərəfindən redaktə edilib
    #1

    Hoisting JavaScript-də olduqca vacib və bəzən çaşdırıcı bir anlayışdır. Bu anlayışı düzgün başa düşmək səhvlərin qarşısını almağa kömək edir və kodun necə işlədiyini daha yaxşı anlamağımıza səbəb olur.

    Sadə dillə desək, hoisting o deməkdir ki, bütün dəyişənlərin və funksiyaların tanımlamaları (declarations) avtomatik olaraq kodun başlanğıcına “qaldırılır”.

    Yəni, siz dəyişən və ya funksiyanı kodda sonradan yazsanız belə, JavaScript onu icra etməzdən əvvəl başa keçirir və hazır vəziyyətə gətirir.


    Dəyişənlərdə hoisting

    JavaScript-də var, let və const ilə elan edilmiş dəyişənlər fərqli şəkildə hoisting olur.

    1. var ilə hoisting

    var ilə elan edilən dəyişənlər tam şəkildə undefined dəyəri ilə yuxarıya qaldırılır.

    Nümunə:

    console.log(a); // undefined
    var a = 5;
    console.log(a); // 5
    

    İzah:

    • JavaScript əvvəlcə var a; sətrini avtomatik olaraq kodun əvvəlinə gətirir.
    • Ona görə də birinci console.log(a); zamanı a dəyişəni mövcuddur, amma dəyəri undefined olur.

    Əslində kod belə görünür:

    var a;
    console.log(a); // undefined
    a = 5;
    console.log(a); // 5
    

    2. let və const ilə hoisting

    let və const ilə elan edilən dəyişənlər də hoisting olunur, amma onlar Temporal Dead Zone (TDZ) adlanan bir mərhələyə düşürlər.

    Bu zaman dəyişən elan olunana qədər istifadə edilərsə, ReferenceError səhvi alınır.

    Nümunə:

    console.log(b); // ReferenceError: Cannot access 'b' before initialization
    let b = 10;
    

    Nümunə const üçün də eynidir.

    Bu kod belə görünür:

    // b hoisted olur, amma dəyəri yoxdur, TDZ-dadır
    let b;
    console.log(b); // ReferenceError
    b = 10;
    

    Funksiyalarda hoisting

    Funksiya elan etmənin (function declaration) və funksiya ifadələrinin (function expression) hoisting davranışı da fərqlidir.

    1. Funksiya elanları (Function Declarations)

    Funksiya elanları tam şəkildə hoisting olunur. Yəni funksiya koddan əvvəl çağırıla bilər.

    Nümunə:

    greet(); // "Salam!"
    
    function greet() {
        console.log('Salam!');
    }
    

    İzah:

    • JavaScript bütün funksiyanı yuxarı qaldırır, ona görə greet funksiyasını əvvəl çağırmaq mümkündür.

    2. Funksiya ifadələri (Function Expressions)

    Funksiya ifadələri hoisting olunur, amma onlar dəyişən kimi davranır. Əgər var ilə elan ediliblərsə, undefined, let və const ilə elan ediliblərsə, ReferenceError verirlər.

    Nümunə (var ilə):

    console.log(add); // undefined
    var add = function() {
        console.log('Toplama');
    };
    add();
    

    Nümunə (let/const ilə):

    console.log(subtract); // ReferenceError
    const subtract = function() {
        console.log('Çıxma');
    };
    subtract();
    

    Hoisting ümumiləşdirilmiş cədvəl

    Növü Hoisting vəziyyəti
    var dəyişəni Qaldırılır, başlanğıc dəyəri undefined
    let/const dəyişəni Qaldırılır, amma TDZ-dədir
    Funksiya elanları Tam qaldırılır və istifadəyə hazırdır
    Funksiya ifadələri Qaldırılır, amma dəyişənin hoisting qaydalarına uyğundur

    Praktik töhvsiyələr

    • let və const istifadə edin: Daha təhlükəsiz və oxunaqlı kod üçün.
    • Funksiyaları əvvəlcədən elan edin: Oxumağı və anlamağı asanlaşdırır.
    • Dəyişənləri istifadə etməzdən əvvəl elan edin: Səhv ehtimalını azaldır.

    Nəticə

    Hoisting JavaScript-in əsas və vacib xüsusiyyətlərindən biridir. Dəyişənlərin və funksiyaların necə “qaldırıldığını” bilmək kod səhvlərindən yayınmağa və proqramın necə işlədiyini daha yaxşı anlamağa kömək edir.

    Unutmayın: var təhlükəli hoisting davranışına səbəb ola bilər, let və const isə daha təhlükəsizdir!

    1 cavab Son cavab
    Cavab ver
    • Mövzu olaraq cavablandır
    🔑 Daxil ol
    • Ən köhnədən yeniyə
    • Ən yenidən köhnəyə
    • Ən çox səs




    Bilik paylaşdıqca artan bir sərvətdir
    • Daxil ol

    • Sizin hesabınız yoxdur? Qeydiyyatdan keç

    • Axtarış etmək üçün daxil olun və ya qeydiyyatdan keçin.
    • İlk yazı
      Son yazı
    0
    • Kateqoriyalar
    • Ən yeni
    • Teqlər
    • Populyar