Pengangkatan JavaScript
Mengangkat adalah perilaku default JavaScript untuk memindahkan deklarasi ke atas.
Deklarasi JavaScript Diangkat
Dalam JavaScript, sebuah variabel dapat dideklarasikan setelah digunakan.
Dengan kata lain; variabel dapat digunakan sebelum dideklarasikan.
Contoh 1 memberikan hasil yang sama seperti Contoh 2 :
Contoh 1
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
Contoh 2
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
Untuk memahami ini, Anda harus memahami istilah "mengangkat".
Mengangkat adalah perilaku default JavaScript untuk memindahkan semua deklarasi ke atas cakupan saat ini (ke atas skrip saat ini atau fungsi saat ini).
Kata kunci let dan const
Variabel yang didefinisikan dengan let
dan const
diangkat ke atas blok, tetapi tidak diinisialisasi .
Artinya: Blok kode mengetahui variabel, tetapi tidak dapat digunakan sampai dideklarasikan.
Menggunakan let
variabel sebelum dideklarasikan akan menghasilkan
ReferenceError
.
Variabel berada dalam "zona mati sementara" dari awal blok hingga dideklarasikan:
Contoh
Ini akan menghasilkanReferenceError
:
carName = "Volvo";
let carName;
Menggunakan const
variabel sebelum dideklarasikan, adalah kesalahan sintaks, sehingga kode tidak akan berjalan.
Contoh
Kode ini tidak akan berjalan.
carName = "Volvo";
const carName;
Baca lebih lanjut tentang let dan const di JS Let / Const .
Inisialisasi JavaScript Tidak Diangkat
JavaScript hanya mengangkat deklarasi, bukan inisialisasi.
Contoh 1 tidak memberikan hasil yang sama seperti Contoh 2 :
Contoh 1
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
Contoh 2
var x = 5; // Initialize x
elem = document.getElementById("demo"); // Find an element
elem.innerHTML = x + " " + y; // Display x and y
var y = 7; // Initialize y
Apakah masuk akal bahwa y tidak terdefinisi dalam contoh terakhir?
Ini karena hanya deklarasi (var y), bukan inisialisasi (=7) yang diangkat ke atas.
Karena pengangkatan, y telah dideklarasikan sebelum digunakan, tetapi karena inisialisasi tidak diangkat, nilai y tidak terdefinisi.
Contoh 2 sama dengan penulisan:
Contoh
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
Nyatakan Variabel Anda Di Atas!
Mengangkat adalah (bagi banyak pengembang) perilaku JavaScript yang tidak diketahui atau diabaikan.
Jika pengembang tidak memahami pengangkatan, program mungkin mengandung bug (kesalahan).
Untuk menghindari bug, selalu deklarasikan semua variabel di awal setiap scope.
Karena beginilah cara JavaScript menafsirkan kode, itu selalu merupakan aturan yang baik.
JavaScript dalam mode ketat tidak mengizinkan variabel digunakan jika tidak dideklarasikan.
Pelajari "gunakan dengan ketat" di bab berikutnya.