Pengangkatan JavaScript dan deklarasi cakupan global

Aug 21 2020

Dalam javascript, tahap kompilasi menemukan dan mengasosiasikan semua deklarasi dengan cakupan yang sesuai.

KASUS 1

a = 2;
console.log(a);

Jika tidak digunakan dalam mode ketat, cuplikan dianggap benar-benar diproses sebagai:

var a;
a = 2;
console.log(a);

Hasil: 2

KASUS2

jika deklarasi terjadi di bawah console.log ()

  console.log(a); 
  var a = 2;

Di sini, di baris 1: compiler akan memeriksa deklarasi a dalam cakupannya jika tidak ditemukan, cakupan global akan menetapkan satu dan kode yang sama akan diasumsikan lagi sama seperti

   var a; 
   console.log(a);
   a = 2;

Output: undefined // karena tidak ada nilai yang diberikan saat interpreter membaca konsol

KASUS3

 console.log(a); 
 a = 2;

Keluaran: RefErr

Mengapa ini melempar kesalahan referensi dan tidak terdefinisi?

Jawaban

1 AbhishekJain Aug 21 2020 at 14:19

Jika Anda memperhatikan dua kasus pertama dengan cermat, Anda selalu mendeklarasikan variabel a, dan di JavaScript hanya deklarasi yang diangkat.

Karena itu, dalam Case 3variabel, Anda atidak pernah dideklarasikan, oleh karena itu, pengangkatan tidak dimungkinkan di sini. Dengan itu, tidak ada variabel dengan nama adalam ruang lingkup, dan karenanya ReferenceError,.

Jika Anda melihat deskripsi ReferenceError , itu berbunyi:

Objek ReferenceError mewakili kesalahan ketika variabel yang tidak ada direferensikan.

1 Quentin Aug 21 2020 at 14:12

Global implisit tidak menyiratkan varpernyataan. Tidak ada yang mengangkat mereka.