Menjelajahi Kedalaman Mengangkat: Menguji Keterampilan JavaScript Anda
Baru-baru ini saya menemukan pertanyaan menarik yang menguji pengetahuan Anda tentang mengangkat. Jadi, tanpa menunggu lebih lama lagi, mari kita simak pertanyaannya.
.
.
.
.
.
.
Output : Akan mencatat fungsi
Mari selami lebih dalam 🏊 logika di balik console.log ini:
Dalam JavaScript, deklarasi fungsi dan deklarasi variabel diangkat ke bagian atas cakupannya selama fase kompilasi.
Namun, ada perbedaan dalam cara mereka diperlakukan:
- Deklarasi Fungsi: Saat suatu fungsi dideklarasikan menggunakan kata kunci fungsi (
function functionName() {}
), seluruh isi fungsi akan diangkat, dan fungsi tersebut tersedia untuk digunakan di mana saja dalam cakupannya, bahkan sebelum deklarasi. Hal ini dikenal sebagai 'pengangkatan fungsi'. - Deklarasi Variabel: Ketika suatu variabel dideklarasikan menggunakan kata kunci
var
(var variableName;
), hanya nama variabel yang diangkat, dan variabel tersebut diinisialisasi dengan nilaiundefined
.
Bukan berarti JavaScript sengaja memilih untuk mengembalikan fungsi ke variabel dengan nama yang sama.
Sebaliknya, ini adalah konsekuensi dari cara kerja hoisting dan scope dalam bahasa tersebut. Dalam JS, deklarasi fungsi lebih diutamakan daripada deklarasi variabel karena pengangkatan.
deklarasi variabel tidak berdampak apa pun pada deklarasi fungsi. Akan melihat contoh di bawah ini.
Mari kita uraikan kodenya baris demi baris:
Inilah yang terjadi:
- Deklarasi fungsi
function myJSSkills() {}
diangkat ke bagian atas cakupan fungsijsIsAwesome
. Artinya variabelmyJSSkills
sekarang merujuk ke fungsi tersebut. - Deklarasi variabel
var myJSSkills = -99;
juga diangkat ke atas lingkup fungsimyJSSkills
, namun hanya deklarasinya yang akan dipindahkan ke atas. yaituvar myJSSkills;
3. Ketika pernyataan return
ditemukan, ia mengembalikan fungsi myJSSKills
karena itulah yang dirujuk oleh myJSSkills
pada titik ini dalam eksekusi kode. sampai saat ini, myJSSkills = -99;
tidak dieksekusi.
Variasi lain untuk dicoba:
function jsIsAwesome() { var myJSSkills = -99; function myJSSkills() {} return myJSSkills; } console.log(jsIsAwesome());
.
.
.
Output: -99 (Beri tepuk tangan jika jawaban Anda benar 👏 )
function myJSSkills() {}; var myJSSkills; // The variable declaration does not have any impact on the function declaration console.log(myJSSkills);
.
.
.
Output: function myJSSkills() {};
( Tepuk tangan jika jawaban Anda benar 👏 )
Dalam Bahasa Inggris Biasa
Terima kasih telah menjadi bagian dari komunitas kami! Sebelum Anda pergi:
- Pastikan untuk bertepuk tangan dan mengikuti penulisnya! 👏
- Anda dapat menemukan lebih banyak konten lagi di PlainEnglish.io 🚀
- Daftarlah untuk mendapatkan buletin mingguan gratis kami. 🗞️
- Ikuti kami di Twitter, LinkedIn, YouTube, dan "Perselisihan".