ES6 đi kèm với rất nhiều tính năng mới tuyệt vời bao gồm hai cách mới để xác định các biến trong JavaScript. Hiện tại có ba từ khóa hoặc mã định danh khác nhau để khai báo một biến trong JavaScript. Trong bài viết này, tôi sẽ giải thích sự khác biệt chính giữa var, let và const và khi nào bạn nên sử dụng chúng
Để hiểu đầy đủ sự khác biệt giữa từng mã định danh, trước tiên chúng ta cần hiểu khái niệm về phạm vi
Phạm vi là gì?Phạm vi xác định khả năng truy cập hoặc khả năng hiển thị của các biến đối với JavaScript. Có ba loại phạm vi trong JavaScript
1. Phạm vi toàn cầu
2. Phạm vi chức năng [cục bộ]
3. Phạm vi khối [mới với ES6]
Các biến được khai báo bên ngoài một hàm nằm trong phạm vi toàn cầu. Các biến toàn cục có thể được truy cập và thay đổi trong bất kỳ phạm vi nào khác. Các biến được xác định trong một hàm thuộc phạm vi cục bộ và không thể truy cập được trong các hàm khác. Mỗi chức năng khi được gọi sẽ tạo ra một phạm vi mới, do đó các biến có cùng tên có thể được sử dụng trong các chức năng khác nhau
Phạm vi khối bao gồm các câu lệnh và vòng lặp if hoặc bất kỳ mã nào khác được gói trong {}. Khi được gọi, chúng không tạo phạm vi mới. Các biến được khai báo bên trong phạm vi khối sẽ vẫn ở trong phạm vi mà chúng đã có
Từ khóa VarTrước ES6, từ khóa var được sử dụng để khai báo một biến trong JavaScript. Từ khóa var đã xuất hiện kể từ khi JavaScript ra đời và đó là thứ bạn sẽ thấy trong bất kỳ mã ES6 nào trước đây
Các biến được khai báo bằng từ khóa var có phạm vi toàn cầu hoặc chức năng, chúng không hỗ trợ phạm vi cấp khối. Điều này có nghĩa là nếu một biến được định nghĩa trong vòng lặp hoặc trong câu lệnh if thì nó có thể được truy cập bên ngoài khối và vô tình được định nghĩa lại dẫn đến chương trình có lỗi. Về nguyên tắc chung, bạn nên luôn khai báo biến với const, nếu bạn nhận thấy giá trị của biến cần thay đổi, hãy quay lại và thay đổi thành let
Javascript ban đầu được tạo ra chỉ với một từ khóa để khai báo một biến, từ dành riêng này là. var
Nhưng kể từ phiên bản thứ 6 [ECMAScript 2015] của đặc tả ngôn ngữ, hai từ khóa mới đã xuất hiện. để cho và const
Nếu tôi phải tóm tắt định nghĩa của hai cách khai báo biến mới này, tôi có thể nói rằng
- let là để khai báo một biến cục bộ
- const là khai báo một biến hằng
Hãy cẩn thận, tham chiếu cố định không có nghĩa là giá trị đằng sau tham chiếu là bất biến, chỉ là tham chiếu không thể thay đổi
Nhưng hãy khám phá xem các biến này hoạt động khác nhau như thế nào trong thực tế
Lưu trữ trên toàn cầu?
- var. vâng ✔️
- cho phép. không ❌
- hăng sô. không ❌
Khi var được sử dụng để khai báo một biến bên ngoài hàm, thì biến này sẽ được tham chiếu trong đối tượng toàn cục của tập lệnh
Trong trình duyệt, biến này được gọi là "cửa sổ" và trong môi trường NodeJS, nó được gọi là "toàn cầu"
Giới hạn phạm vi chức năng?
- var. vâng ✔️
- cho phép. vâng ✔️
- hăng sô. vâng ✔️
Phạm vi của hàm là phạm vi duy nhất đặt tất cả các biến ngang bằng nhau và việc khai báo một biến bên trong hàm sẽ không có bất kỳ ảnh hưởng nào đến các biến bên ngoài
Giới hạn chức năng khối?
- var. không ❌
- cho phép. vâng ✔️
- hăng sô. vâng ✔️
Đối với những người thắc mắc khối là gì, nó chỉ đơn giản là một nhóm hướng dẫn được viết giữa một cặp dấu ngoặc nhọn "{. }" ngoại trừ khi chúng phân định thân hàm hoặc đối tượng JSON
Một tập lệnh thường được tìm thấy sau if, other, for, while, v.v. Hãy nhớ rằng một biến được khai báo bằng "var" bên trong for sẽ tự động được coi là biến toàn cục
Ngoại trừ nếu for nằm trong một chức năng, rõ ràng là
Có thể được chỉ định lại?
- var. vâng ✔️
- cho phép. vâng ✔️
- hăng sô. không ❌
Gán lại có nghĩa là thay đổi giá trị của biến khi chúng ta đang sử dụng kiểu nguyên thủy hoặc sửa đổi tham chiếu biến khi sử dụng kiểu phức tạp
Xin lưu ý rằng nếu const được sử dụng để tham chiếu một đối tượng, nội dung của đối tượng này vẫn có thể được sửa đổi
Có thể được khai báo lại?
- var. vâng ✔️
- cho phép. không ❌
- hăng sô. không ❌
Không thể khai báo lại một biến ngoại trừ nếu sử dụng var, nhưng đó chắc chắn không phải là một cách làm tốt và tôi khuyên bạn không nên làm điều đó
cẩu?
- var. vâng ✔️
- cho phép. không ❌
- hăng sô. không ❌
Nâng đỡ là một cơ chế phức tạp hơn xảy ra trong quá trình diễn giải mã JS và nếu bạn không quen với khái niệm này, tôi khuyên bạn nên đọc bài đăng trên blog chuyên dụng của tôi về nó [tiếng Pháp]
Tôi hy vọng bài đăng này hữu ích cho bạn, hẹn gặp lại bạn sau trên blog
ủng hộ blog
Blog này hoàn toàn không có quảng cáo và nếu bạn muốn hỗ trợ công việc của tôi, vui lòng quyên góp một đô la
Cho tôi một ly nước tăng lực 🍾Thông tin về các Tác giả
Xin chào, tôi là Nicolas Brondin-Bernard, kỹ sư web tự do từ năm 2015 với niềm đam mê chia sẻ kiến thức và kinh nghiệm
Tôi cũng là huấn luyện viên cho các nhà phát triển web mới vào nghề, bạn có thể nhắn tin cho tôi qua nicolas@brondin. com, trên trang web của tôi hoặc theo dõi tôi trên các mạng xã hội như Twitter để tránh bỏ lỡ các bài đăng hay nhất hoặc các dự án tương lai của tôi