Dalam tutorial ini, Anda akan belajar tentang mengangkat JavaScript dengan bantuan contoh.
Hoisting di JavaScript adalah perilaku di mana fungsi atau variabel dapat digunakan sebelum deklarasi. Sebagai contoh,
// using test before declaring console.log(test); // undefined var test;
Program di atas berfungsi dan hasilnya tidak akan ditentukan. Program di atas berperilaku sebagai
// using test before declaring var test; console.log(test); // undefined
Karena uji variabel hanya dideklarasikan dan tidak memiliki nilai, undefined
nilai diberikan padanya.
Jika Anda ingin mempelajari lebih lanjut tentang variabel, kunjungi Variabel JavaScript.
Catatan : Dalam pengangkatan, meskipun tampaknya deklarasi telah dipindahkan ke dalam program, hal yang sebenarnya terjadi adalah bahwa deklarasi fungsi dan variabel ditambahkan ke memori selama fase kompilasi.
Variabel Mengangkat
Dalam hal variabel dan konstanta, kata kunci var
dikibarkan dan let
dan const
tidak memungkinkan pengangkatan.
Sebagai contoh,
// program to display value a = 5; console.log(a); var a; // 5
Dalam contoh di atas, variabel a digunakan sebelum mendeklarasikannya. Dan program bekerja dan menampilkan output 5. Program berperilaku sebagai:
// program to display value var a; a = 5; console.log(a); // 5
Namun dalam JavaScript, inisialisasi tidak diangkat. Sebagai contoh,
// program to display value console.log(a); var a = 5;
Keluaran
tidak terdefinisi
Program di atas berperilaku sebagai:
var a; console.log(a); a = 5;
Hanya deklarasi yang dipindahkan ke memori dalam fase kompilasi. Karenanya, nilai variabel a undefined
karena a dicetak tanpa menginisialisasi.
Juga, ketika variabel digunakan di dalam fungsi, variabel hanya akan diangkat ke atas fungsi. Sebagai contoh,
// program to display value var a = 4; function greet() ( b = 'hello'; console.log(b); // hello var b; ) greet(); // hello console.log(b);
Keluaran
hello Uncaught ReferenceError: b tidak ditentukan
Dalam contoh di atas, variabel b diangkat ke atas fungsi greet
dan menjadi variabel lokal. Karenanya b hanya dapat diakses di dalam fungsi. b tidak menjadi variabel global.
Untuk mempelajari lebih lanjut tentang variabel lokal dan global, kunjungi Cakupan Variabel JavaScript.
Catatan : Saat mengangkat, deklarasi variabel hanya bisa diakses oleh lingkup langsung.
Jika sebuah variabel digunakan dengan let
kata kunci, variabel itu tidak dikibarkan. Sebagai contoh,
// program to display value a = 5; console.log(a); let a; // error
Keluaran
ReferenceError Tidak Tertangkap: Tidak dapat mengakses 'a' sebelum inisialisasi
Saat menggunakan let
, variabel harus dideklarasikan terlebih dahulu.
Fungsi Mengangkat
Sebuah fungsi bisa dipanggil sebelum mendeklarasikannya. Sebagai contoh,
// program to print the text greet(); function greet() ( console.log('Hi, there.'); )
Keluaran
Halo
Dalam program di atas, fungsi greet
dipanggil sebelum mendeklarasikannya dan program menunjukkan outputnya. Ini karena pengangkatan.
Namun, ketika suatu fungsi digunakan sebagai ekspresi , kesalahan terjadi karena hanya deklarasi yang diangkat. Sebagai contoh;
// program to print the text greet(); let greet = function() ( console.log('Hi, there.'); )
Keluaran
ReferenceError Tidak Tertangkap: salam tidak ditentukan
Jika var
digunakan dalam program di atas, kesalahannya adalah:
TypeError yang tidak tertangkap: greet bukanlah sebuah fungsi
Catatan : Umumnya, pengangkatan tidak dilakukan dalam bahasa pemrograman lain seperti Python, C, C ++, Java.
Mengangkat dapat menyebabkan hasil yang tidak diinginkan dalam program Anda. Dan yang terbaik adalah mendeklarasikan variabel dan fungsi terlebih dahulu sebelum menggunakannya dan menghindari pengangkatan.
Dalam kasus variabel, lebih baik digunakan let
daripada var
.