Hướng dẫn của Babel về ES6 nói:
letlà mớivar.
Rõ ràng sự khác biệt duy nhất là varđược phân chia theo chức năng hiện tại , trong khi letđược phân chia theo khối hiện tại . Có một số ví dụ tốt trong câu trả lời này .
Tôi không thể thấy bất kỳ lý do để sử dụng vartrong mã ES6. Ngay cả khi bạn muốn phạm vi một biến đã cho cho toàn bộ hàm, bạn vẫn có thể làm như vậy bằng letcách đặt khai báo ở đầu khối chức năng, đây là điều bạn nên làm với vardù sao để chỉ ra phạm vi thực tế. Và nếu bạn muốn phạm vi một cái gì đó tốt hơn trong một forkhối hoặc một cái gì đó, thì bạn cũng có thể làm điều đó.
Vì vậy, bản năng của tôi là ngừng sử dụng varhoàn toàn khi viết mã ES6.
Câu hỏi của tôi là, tôi có sai về điều này? Có trường hợp hợp pháp nào varthích hợp hơn letkhông?
letcâu lệnh ngay trên đầu của một hàm, tôi nghĩ rõ ràng là bạn có ý định phạm vi nó cho toàn bộ hàm. Tôi không nghĩ việc sử dụng varlàm cho nó rõ ràng hơn là chỉ đơn giản là đặt nó ở trên cùng.
varvẫn còn tồn tại, là khả năng tương thích ngược. Nếu không phải như vậy, họ đã loại bỏ varhoàn toàn, hoặc không bao giờ được giới thiệu letở nơi đầu tiên, thay vào đó thay đổi ngữ nghĩa của varnhững gì được cho là nên có.
varcó vẻ mỏng đối với tôi, và không đủ để đảm bảo có một loại biến thứ ba nhảy xung quanh. Bạn có thể phạm vi một lettoàn bộ chức năng chỉ bằng cách đặt nó ở trên cùng của chức năng, điều này rõ ràng hơn nhiều so với việc viết vartrong một khối (để đưa nó ra khỏi khối đó để bạn có thể sử dụng nó bên ngoài khối đó - kỳ dị). Ông cảnh báo rằng nếu bạn phạm vi một letchức năng thì "đó chỉ là vị trí báo hiệu sự khác biệt, chứ không phải cú pháp", nhưng tôi nghĩ đó là một điều tốt.
var. các ví dụ anh trình bày để giữ vardường như bị chiếm đoạt - và dựa trên các lỗi mã hóa nghiêm trọng . Sẽ tốt hơn nhiều khi gặp phải một lỗi và buộc phải sửa các lỗi đó hơn là sử dụng các chức năng ngôn ngữ để cho phép một người thoát khỏi nó! Điều gì tiếp theo, khuyên nên bọc mọi thứ trong một lần thử / bắt để tránh sự cố? Phần còn lại của liên kết đó là tốt nhưng tôi không đồng ý với phần cụ thể đó.
varnhư một chỉ báo có ý thức rằng biến này được dự định nằm trong toàn bộ chức năng có thể là một quy ước "tự ghi lại tài liệu" hữu ích .