Sự khác biệt chính giữa từ khóa var và let trong JavaScript là gì
Khai báo 6 khai báo một biến cục bộ trong phạm vi khối, tùy chọn khởi tạo nó thành một giá trị Show
7Tên biến hoặc các biến cần khai báo. Mỗi cái phải là một mã định danh JavaScript hợp pháp 8 Tùy chọnĐối với mỗi biến được khai báo, bạn có thể tùy chọn chỉ định giá trị ban đầu của nó cho bất kỳ biểu thức JavaScript hợp pháp nào Ngoài ra, cú pháp Gán cấu trúc cũng có thể được sử dụng để khai báo các biến
6 cho phép bạn khai báo các biến bị giới hạn trong phạm vi của câu lệnh khối hoặc biểu thức mà nó được sử dụng, không giống như từ khóa 0, khai báo biến toàn cục hoặc cục bộ cho toàn bộ hàm bất kể phạm vi khối. Sự khác biệt khác giữa 0 và 6 là cái sau chỉ có thể được truy cập sau khi đạt được tuyên bố của nó (xem ). Vì lý do này, các khai báo 6 thường được coi là không được nâng lênCũng giống như đối tượng 6 không tạo thuộc tính của đối tượng 6 khi được khai báo trên toàn cầu (trong phạm vi trên cùng)Có thể tìm thấy lời giải thích tại sao tên "let" được chọn tại đây Có thể tránh được nhiều vấn đề với biến 6 bằng cách khai báo chúng ở đầu phạm vi mà chúng được sử dụng (làm như vậy có thể ảnh hưởng đến khả năng đọc)Không giống như 0, 6 bắt đầu. Điều đó có nghĩa là bạn không thể sử dụng một khai báo 6 đơn lẻ làm phần thân của một khối (điều này hợp lý vì không có cách nào để truy cập vào biến)
Các biến được khai báo bởi 6 có phạm vi của chúng trong khối mà chúng được khai báo, cũng như trong bất kỳ khối phụ nào được chứa. Bằng cách này, 6 hoạt động rất giống với 0. Sự khác biệt chính là phạm vi của một biến 0 là toàn bộ chức năng kèm theo
Ở cấp độ cao nhất của các chương trình và chức năng, 6, không giống như 0, không tạo thuộc tính trên đối tượng toàn cục. Ví dụ
Việc khai báo lại cùng một biến trong cùng một chức năng hoặc phạm vi khối sẽ làm tăng 7
Bạn có thể gặp lỗi trong câu lệnh 8 vì chỉ có một khối
Một khối được lồng bên trong một mệnh đề trường hợp sẽ tạo ra một môi trường từ vựng có phạm vi khối mới, tránh các lỗi khai báo lại được hiển thị ở trên
Nếu bạn đang thử nghiệm trong REPL, chẳng hạn như bảng điều khiển web Firefox (Công cụ > Nhà phát triển web > Bảng điều khiển web) và bạn chạy hai khai báo 6 có cùng tên trong hai đầu vào riêng biệt, thì bạn có thể gặp lỗi khai báo lại giống nhau. Xem thảo luận thêm về vấn đề này trong lỗi 1580891. Bảng điều khiển Chrome cho phép khai báo lại 6 giữa các đầu vào REPL khác nhauBiến 6 hoặc 4 được cho là nằm trong "vùng chết tạm thời" (TDZ) từ khi bắt đầu khối cho đến khi quá trình thực thi mã đến dòng nơi biến được khai báo và khởi tạoTrong khi ở bên trong TDZ, biến chưa được khởi tạo với giá trị và bất kỳ nỗ lực nào để truy cập vào biến đó sẽ dẫn đến lỗi 3. Biến được khởi tạo với một giá trị khi thực thi đến dòng mã nơi nó được khai báo. Nếu không có giá trị ban đầu nào được chỉ định với khai báo biến, nó sẽ được khởi tạo với giá trị là 4Điều này khác với các biến, sẽ trả về giá trị 4 nếu chúng được truy cập trước khi chúng được khai báo. Đoạn mã dưới đây cho thấy kết quả khác nhau khi truy cập 6 và 0 trong đoạn mã trước dòng mà chúng được khai báo
Thuật ngữ "thời gian" được sử dụng vì vùng phụ thuộc vào thứ tự thực hiện (thời gian) hơn là thứ tự viết mã (vị trí). Ví dụ: mã bên dưới hoạt động vì mặc dù hàm sử dụng biến 6 xuất hiện trước khi biến được khai báo, nhưng hàm được gọi bên ngoài TDZ
TDZ và if (x) {
let foo;
let foo; // SyntaxError thrown.
}
|