Kaldırma, JavaScript'in bildirimleri şuraya taşıma konusundaki varsayılan davranışıdır: tepe.
JavaScript'te bir değişken kullanıldıktan sonra bildirilebilir.
Başka bir deyişle; Bir değişken bildirilmeden önce kullanılabilir.
Örnek 1, Örnek 2 ile aynı sonucu verir:
x = 5; // Assign 5 to x
elem = document.getElementById("demo"); // Find an element
elem.innerHTML = x;
// Display x in the element
var x; // Declare xKendiniz Deneyin →
<!DOCTYPE html>
<html>
<body>
<p id="demo"></p>
<script>
x = 5; // Assign 5 to x
elem = document.getElementById("demo"); // Find an element
elem.innerHTML = x; // Display x in the element
var x; // Declare x
</script>
</body>
</html>
var x; // Declare x
x = 5; // Assign 5 to x
elem = document.getElementById("demo"); // Find an element
elem.innerHTML = x;
// Display x in the elementKendiniz Deneyin →
<!DOCTYPE html>
<html>
<body>
<p id="demo"></p>
<script>
var x; // Declare x
x = 5; // Assign 5 to x
elem = document.getElementById("demo"); // Find an element
elem.innerHTML = x; // Display x in the element
</script>
</body>
</html>
Bunu anlamak için "kaldırma" terimini anlamalısınız.
Kaldırma, JavaScript'in tüm bildirimleri geçerli kapsamın en üstüne (geçerli betiğin veya geçerli işlevin en üstüne).
let ve const ile tanımlanan değişkenler en üste çıkarılır ancak başlatılmamış.<p>Anlamı: Kod bloğu, bloğun farkındadır. değişkendir ancak bildirilinceye kadar kullanılamaz. <p>Bir let değişkeninin bildirilmeden önce kullanılması şu sonuçla sonuçlanacaktır: ReferenceError.
Değişken başlangıçtan itibaren "geçici ölü bölge"dedir bloğun ilan edilene kadar:
carName = "Volvo";
let carName;Kendiniz Deneyin →
<!DOCTYPE html>
<html>
<body>
<h2>JavaScript Hoisting</h2>
<p>With <b>let</b>, you cannot use a variable before it is declared.</p>
<p id="demo"></p>
<script>
try {
carName = "Saab";
let carName = "Volvo";
}
catch(err) {
document.getElementById("demo").innerHTML = err;
}
</script>
</body>
</html>
Bir const değişkeninin bildirilmeden önce kullanılması bir sözdizimi hatasıdır, bu nedenle kod çalışmayacaktır.
Bu kod çalışmayacak.
carName = "Volvo";
const carName;Kendiniz Deneyin →
<!DOCTYPE html>
<html>
<body>
<h2>JavaScript Hoisting</h2>
<p>With <b>const</b>, you cannot use a variable before it is declared.</p>
<p>Try to remove the //.</p>
<p id="demo"></p>
<script>
carName = "Volvo";
//const carName;
document.getElementById("demo").innerHTML = carName;
</script>
</body>
</html>
JS Let/Const'ta let ve const hakkında daha fazla bilgi edinin.
JavaScript yalnızca bildirimleri kaldırır, başlatmaları değil.
Örnek 1, aşağıdakiyle aynı sonucu vermez Örnek 2:
var x = 5; // Initialize x
var y = 7; // Initialize y
elem = document.getElementById("demo"); // Find an element
elem.innerHTML = x + " " + y; // Display x and yKendiniz Deneyin →
<!DOCTYPE html>
<html>
<body>
<p id="demo"></p>
<script>
var x = 5; // Initialize x
var y = 7; // Initialize y
elem = document.getElementById("demo"); // Find an element
elem.innerHTML = x + " " + y; // Display x and y
</script>
</body>
</html>
var x = 5; // Initialize x
elem = document.getElementById("demo"); // Find an element
elem.innerHTML = x + " " + y; // Display x and y
var y = 7; // Initialize yKendiniz Deneyin →
<!DOCTYPE html>
<html>
<body>
<p id="demo"></p>
<script>
var x = 5; // Initialize x
elem = document.getElementById("demo"); // Find an element
elem.innerHTML = "x is " + x + " and y is " + y; // Display x and y
var y = 7; // Initialize y
</script>
</body>
</html>
Son örnekte y'nin tanımsız olması mantıklı mı?
Bunun nedeni, başlatmanın (=7) değil, yalnızca bildirimin (var y) en üste kaldırılmasıdır.
Kaldırma nedeniyle, y kullanılmadan önce beyan edilmiştir, ancak başlatmalar kaldırılmaz, y'nin değeri tanımsızdır.
Örnek 2 yazmakla aynıdır:
var x = 5; // Initialize x
var y; // Declare y
elem = document.getElementById("demo"); // Find an element
elem.innerHTML = x + " " + y; // Display x and y
y = 7; // Assign 7 to y Kendiniz Deneyin →
<!DOCTYPE html>
<html>
<body>
<p id="demo"></p>
<script>
var x = 5; // Initialize x
var y; // Declare y
elem = document.getElementById("demo"); // Find an element
elem.innerHTML = x + " " + y; // Display x and y
y = 7; // Assign 7 to y
</script>
</body>
</html>
Kaldırma (birçok geliştirici için) bilinmeyen veya gözden kaçan bir davranıştır. JavaScript.
Bir geliştirici kaldırma işlemini anlamıyorsa programlarda hatalar (hatalar) bulunabilir.<p> Hataları önlemek için her zaman tüm değişkenleri başlangıçta bildirin. her kapsam.<p> JavaScript bu şekilde yorumladığı için kod, her zaman iyi bir kuraldır.
Katı modda JavaScript, değişkenlerin kullanılmasına izin vermez bildirilmedi.
Sonraki bölümde "katı kullanım" konusunu inceleyin.