Chúng tôi biết rằng đó letlà một từ khóa dành riêng xác định một biến trong JavaScript.
var let = 2;
console.log(let); // return 2
Vậy tại sao điều này không phải là một lỗi?
Chúng tôi biết rằng đó letlà một từ khóa dành riêng xác định một biến trong JavaScript.
var let = 2;
console.log(let); // return 2
Vậy tại sao điều này không phải là một lỗi?
Câu trả lời:
let chỉ là một từ dành riêng trong chế độ nghiêm ngặt:
'use strict';
var let = 5;
Uncaught SyntaxError: Chế độ nghiêm ngặt bất ngờ dành riêng từ
Điều này là do các trình duyệt thường ưu tiên khả năng tương thích ngược hơn tất cả các trình duyệt khác. Mặc dù letđã được giới thiệu trong ES2015 (và việc sử dụng nó đã được thấy trước đó trước đó), các tập lệnh trước được sử dụng letlàm tên biến sẽ tiếp tục hoạt động như mong muốn. Ví dụ: nếu tập lệnh của bạn được viết vào năm 2008:
var let = 2;
console.log(let);
Sau đó, nó sẽ tiếp tục làm việc vào năm 2020.
Vì những lý do rất giống nhau, asyncvà awaitcũng được phép dưới dạng tên biến .
Về lý do tại sao việc sử dụng letlỗi trong chế độ nghiêm ngặt - chế độ nghiêm ngặt đã được giới thiệu trong ES5, vào năm 2009. Trước đó, các nhà thiết kế ngôn ngữ thấy rằng việc sử dụng (các) từ khóa mới để khai báo các biến là một khả năng trong tương lai, nhưng nó không phải là Vẫn chưa thành công, và ES6 vẫn còn một chặng đường dài. Khi ES5 xuất hiện, người viết kịch bản có thể chọn tham gia chế độ nghiêm ngặt để làm cho mã bớt khó hiểu hơn và thay đổi các lỗi im lặng thành lỗi rõ ràng. Mặc dù letchưa thể sử dụng để khai báo biến , nhưng việc cấm nó như một tên biến trong chế độ nghiêm ngặt đã cải thiện khả năng đọc của các tập lệnh trong tương lai được chọn ở chế độ nghiêm ngặt, trong khi cũng không phá vỡ bất kỳ tập lệnh hiện có nào.
letvà một số tác phẩm khác hoạt động như những từ dành riêng chỉ trong chế độ nghiêm ngặt. Các thông số kỹ thuật nói
Không được phép trong chế độ nghiêm ngặt : Những người đang theo ngữ cảnh không được phép như nhận dạng, trong mã chế độ nghiêm ngặt:
let,static,implements,interface,package,private,protected, vàpublic;
Bạn có thể thấy letbên trong danh sách các từ chỉ không được phép trong chế độ nghiêm ngặt. Nếu bạn muốn ném lỗi khi sử dụng letlàm tên biến, bạn có thể sử dụng chế độ nghiêm ngặt
"use strict";
var let = 3
'Sử dụng nghiêm ngặt';
nó sẽ báo lỗi sử dụng các công cụ bó như webpack, grunt để biên dịch mã của bạn.