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:

  1. 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'.
  2. Deklarasi Variabel: Ketika suatu variabel dideklarasikan menggunakan kata kunci var (var variableName;), hanya nama variabel yang diangkat, dan variabel tersebut diinisialisasi dengan nilai undefined.

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:

  1. Deklarasi fungsi function myJSSkills() {} diangkat ke bagian atas cakupan fungsi jsIsAwesome. Artinya variabel myJSSkills sekarang merujuk ke fungsi tersebut.
  2. Deklarasi variabel var myJSSkills = -99; juga diangkat ke atas lingkup fungsi myJSSkills, namun hanya deklarasinya yang akan dipindahkan ke atas. yaitu var 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: