Sự khác biệt giữa sử dụng let và var trong JavaScript là gì?

Khi nào bạn nên sử dụng let over var? Và tại sao? Hãy cùng tìm hiểu!

Trong JavaScript hiện đại, chúng ta có 3 cách để khai báo một biến và gán giá trị cho nó:

  • const
  • let
  • var

Khi làm việc với các biến trong JavaScript, tôi luôn mặc định sử dụngconst. Nó đảm bảo giá trị không thể được chỉ định lại và vì vậy nó an toàn hơn khi sử dụng.

Nhưng khi tôi cần khai báo lại một biến sau này, tôi luôn sử dụnglet.

Tôi chưa sử dụngvartrong nhiều năm, và đối với tôi, nó chỉ ở đó cho mục đích tương thích ngược, và tôi luôn nhướng mày khi thấy nó được sử dụng.

Tại sao?

Đầu tiên,letphạm vi hợp lý.

Phạm vi giống nhau được sử dụng trong nhiều hoặc ít hơn tất cả các ngôn ngữ lập trình phổ biến, phạm vi khối, quy định rằng các biến được khai báo bằng cách sử dụngletđược xác định phạm vi đến khối gần nhất.

varthay vào đó, nó kỳ lạ hơn một chút, vì nó có phạm vi chức năng, có nghĩa là các biến được khai báo bằng cách sử dụngvarđược phạm vi đến chức năng gần nhất.

Điều này có ý nghĩa thiết thực. Ví dụ, một biến được khai báo bên trong mộtifhoặc được sử dụng nhưfortrình lặp vòng lặp. Sử dụngletlàm cho nó cục bộ cho 2 khối đó. Sử dụngvartuy nhiên, cho phép biến có sẵn bên ngoài khối đó, điều này có thể dẫn đến lỗi.

Luôn sử dụng công cụ cung cấp cho bạn ít năng lượng nhất, để đảm bảo bạn có quyền kiểm soát tối đa đối với nó.Với sức mạnh lớn đến trách nhiệm lớn.

Một lý do khác để thíchletcẩu. Giốngconst,letcác biến không được lưu trữ, nhưng chúng được khởi tạo khi đánh giá.

varthay vào đó, các biến được đưa lên đầu hàm và do đó chúng có sẵn ngay cả trong các dòngtrướctuyên bố của họ. Kỳ lạ, phải không?

Lý do thứ ba: khi bạn khai báo mộtletbiến có cùng tên với một biến đã tồn tại, bạn sẽ gặp lỗi (trongchế độ nghiêm ngặt).

Cuối cùng, một sự khác biệt lớn khác: nếu bạn khai báovarbiến bên ngoài bất kỳ hàm nào, nó được gán chođối tượng toàn cầu, nghĩa làwindowbên trong trình duyệt.letkhông hoạt động theo cách này; biến có sẵn, nhưng không được đính kèm với đối tượng toàn cục và do đó, nó không thể truy cập được từ bên ngoài tệp của bạn.

Tải xuống miễn phí của tôiSổ tay dành cho Người mới bắt đầu JavaScript


Các hướng dẫn js khác: