Khai báo phạm vi toàn cầu và lưu trữ Javascript

Aug 21 2020

Trong javascript, giai đoạn biên dịch tìm và liên kết tất cả các khai báo với các phạm vi thích hợp của chúng.

TRƯỜNG HỢP 1

a = 2;
console.log(a);

Nếu không được sử dụng ở chế độ nghiêm ngặt, đoạn mã được giả định là thực sự được xử lý như sau:

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

Đầu ra: 2

CASE2

nếu khai báo xảy ra bên dưới console.log ()

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

Ở đây tại dòng 1: trình biên dịch sẽ kiểm tra khai báo của một trong phạm vi của nó nếu không được tìm thấy, phạm vi toàn cục sẽ chỉ định một và cùng một mã sẽ được giả định giống như

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

Đầu ra: undefined // vì không có giá trị nào được gán trong khi bảng điều khiển đọc thông dịch viên

CASE3

 console.log(a); 
 a = 2;

Đầu ra: RefErr

Tại sao điều này ném ra lỗi tham chiếu và không phải là không xác định?

Trả lời

1 AbhishekJain Aug 21 2020 at 14:19

Nếu bạn xem xét cẩn thận hai trường hợp đầu tiên của mình, bạn luôn khai báo biến avà trong JavaScript chỉ có các khai báo được lưu trữ.

Điều đó đang được nói, trong của bạn Case 3, biến akhông bao giờ được khai báo, do đó, không thể sử dụng ở đây. Với điều đó, không có biến theo tên atrong phạm vi và do đó ReferenceError,.

Nếu bạn nhìn vào mô tả của ReferenceError , nó có nội dung:

Đối tượng ReferenceError đại diện cho một lỗi khi một biến không tồn tại được tham chiếu.

1 Quentin Aug 21 2020 at 14:12

Các hình cầu ngầm không ngụ ý một vartuyên bố. Không có cẩu của chúng.