JavaScript Hoisting

Üstte çıkarma (Hoisting), JavaScript'in tanımlamaları en üstüne çıkarması olan varsayılan davranıştır.

JavaScript tanımlamaları üstte çıkarılır

JavaScript'te, değişkeni kullanmadan önce onu tanımlayabilirsiniz.

Diyelim ki, değişkeni tanımlamadan önce kullanabilirsiniz.

Örnek 1 ileÖrnek 2 Sonuçlar aynıdır:

Örnek 1

x = 5; // 5'i x'e atama
elem = document.getElementById("demo"); // Elementi bul
elem.innerHTML = x;                     // Eleman içinde x'yi göster
var x; // x'yi tanımla

Kişisel olarak deneyin

Örnek 2

var x; // x'yi tanımla
x = 5; // 5'i x'e atama
elem = document.getElementById("demo"); // Elementi bul
elem.innerHTML = x;                     // Eleman içinde x'yi göster

Kişisel olarak deneyin

Bu noktayı anlamak için 'hoisting' terimini anlamak zorundasınız.

Hoisting, JavaScript'in tüm tanımlamaları mevcut etki alanının en üstüne çıkarması olan varsayılan davranıştır (mevcut betiği veya mevcut fonksiyonun en üstüne çıkarma).

let ve const anahtar kelimeleri

ile let veya const Tanımlanan değişkenler ve sabitler üstte çıkarılmaz!

Lütfen JS Let / Const let ve const hakkında daha fazla bilgi için burada okuyun.

JavaScript başlangıçları üstte çıkarılmaz

JavaScript sadece tanımlamaları değil, başlangıçları da üstte çıkarır.

Örnek 1 ileÖrnek 2 Sonuçlar aynı değil:

Örnek 1

var x = 5; // x'yi başlat
var y = 7; // y'yi başlat
elem = document.getElementById("demo"); // Elementi bul
elem.innerHTML = x + " " + y;           // x ve y'yi göster

Kişisel olarak deneyin

Örnek 2

var x = 5; // x'yi başlat
elem = document.getElementById("demo"); // Elementi bul
elem.innerHTML = x + " " + y;           // x ve y'yi göster
var y = 7; // y'yi başlat 

Kişisel olarak deneyin

Son örnekteki y hala tanımlanmamış olabilir mi?

Bu, sadece tanımlama (var y) değil, başlangıç (=7) üstte çıkarıldığı için budur.

Hoisting nedeniyle, y kullanılmadan önce tanımlandı, ancak tanımlanmamış olarak yükseltildiği için y'nin değeri hala tanımsızdır.

Örnek 2 de aynı:

Örnek

var x = 5; // x'yi başlat
var y;     // y'yi beyan et
elem = document.getElementById("demo"); // Elementi bul
elem.innerHTML = x + " " + y;           // x ve y'yi göster
y = 7;    // 7'yi y'ye atama yap

Kişisel olarak deneyin

Değişkenlerinizi üstte beyan edin!

Hoisting (birçok geliştirici için) JavaScript'in bilinmeyen veya göz ardı edilen bir davranışıdır.

Hoisting'i anlamayan geliştiriciler, programlarının hatalar (bug) içerebilir.

Bugları önlemek için her zaman her alanın başında tüm değişkenleri beyan edin.

Bu, JavaScript'in kodu nasıl yorumladığını açıkladığı için bu iyi alışkanlığı sürdürün.

Sıkı moddaki JavaScript, tanımlanmamış olarak kullanılmayan değişkenlere izin vermez.

Bir sonraki bölümde öğrenin “use strict”。