Dalam tutorial ini, anda akan belajar mengenai pengangkatan JavaScript dengan bantuan contoh.
Mengangkat dalam JavaScript adalah tingkah laku di mana fungsi atau pemboleh ubah boleh digunakan sebelum deklarasi. Sebagai contoh,
// using test before declaring console.log(test); // undefined var test;
Program di atas berfungsi dan outputnya tidak akan ditentukan. Program di atas berkelakuan seperti
// using test before declaring var test; console.log(test); // undefined
Oleh kerana ujian pemboleh ubah hanya dinyatakan dan tidak mempunyai nilai, undefined
nilai diberikan kepadanya.
Sekiranya anda ingin mengetahui lebih lanjut mengenai pemboleh ubah, kunjungi Pembolehubah JavaScript.
Catatan : Dalam pengangkatan, walaupun nampaknya deklarasi telah naik dalam program, perkara sebenarnya yang berlaku adalah fungsi dan deklarasi pemboleh ubah ditambahkan ke memori semasa fasa penyusunan.
Mengangkat Pembolehubah
Dari segi pemboleh ubah dan pemalar, kata kunci var
dinaikkan dan let
dan const
tidak membenarkan mengangkat.
Sebagai contoh,
// program to display value a = 5; console.log(a); var a; // 5
Dalam contoh di atas, pemboleh ubah a digunakan sebelum menyatakannya. Dan program berfungsi dan memaparkan output 5. Program ini berperilaku seperti:
// program to display value var a; a = 5; console.log(a); // 5
Walau bagaimanapun dalam JavaScript, inisialisasi tidak disokong. Sebagai contoh,
// program to display value console.log(a); var a = 5;
Pengeluaran
tidak ditentukan
Program di atas berkelakuan seperti:
var a; console.log(a); a = 5;
Hanya deklarasi yang dipindahkan ke memori dalam fasa kompilasi. Oleh itu, nilai pemboleh ubah a adalah undefined
kerana a dicetak tanpa memulakannya.
Selain itu, apabila pemboleh ubah digunakan di dalam fungsi, pemboleh ubah hanya diangkat ke bahagian 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);
Pengeluaran
hello Rujukan Kesalahan Tidak Ditangkap: b tidak ditentukan
Dalam contoh di atas, pemboleh ubah b diangkat ke bahagian atas fungsi greet
dan menjadi pemboleh ubah tempatan. Oleh itu b hanya boleh diakses di dalam fungsi. b tidak menjadi pemboleh ubah global.
Untuk mengetahui lebih lanjut mengenai pemboleh ubah tempatan dan global, kunjungi Skop Pembolehubah JavaScript.
Catatan : Dalam pengangkatan, deklarasi pemboleh ubah hanya dapat diakses ke ruang lingkup langsung.
Sekiranya pemboleh ubah digunakan dengan let
kata kunci, pemboleh ubah tersebut tidak diangkat. Sebagai contoh,
// program to display value a = 5; console.log(a); let a; // error
Pengeluaran
Kesalahan Rujukan Tidak Tercatat: Tidak dapat mengakses 'a' sebelum memulakan
Semasa menggunakan let
, pemboleh ubah mesti dinyatakan terlebih dahulu.
Fungsi Mengangkat
Fungsi boleh dipanggil sebelum menyatakannya. Sebagai contoh,
// program to print the text greet(); function greet() ( console.log('Hi, there.'); )
Pengeluaran
Hai, ada
Dalam program di atas, fungsi greet
dipanggil sebelum menyatakannya dan program menunjukkan output. Ini disebabkan oleh pengangkatan.
Namun, ketika fungsi digunakan sebagai ekspresi , kesalahan terjadi kerana hanya deklarasi yang dikibarkan. Sebagai contoh;
// program to print the text greet(); let greet = function() ( console.log('Hi, there.'); )
Pengeluaran
RujukanError yang Tidak Terperangkap: salam tidak ditentukan
Sekiranya var
digunakan dalam program di atas, kesalahannya adalah:
TypeError Uncaught: salam bukan fungsi
Catatan : Secara amnya, mengangkat tidak dilakukan dalam bahasa pengaturcaraan lain seperti Python, C, C ++, Java.
Mengangkat boleh menyebabkan hasil yang tidak diingini dalam program anda. Dan yang terbaik adalah menyatakan pemboleh ubah dan fungsi terlebih dahulu sebelum menggunakannya dan elakkan daripada mengangkat.
Sekiranya pemboleh ubah, lebih baik digunakan let
daripada var
.