Các ngữ nghĩa của var
vàlet
var
và let
là một tuyên bố cho máy và cho các lập trình viên khác:
Tôi dự định rằng giá trị của nhiệm vụ này thay đổi trong quá trình thực hiện. Đừng dựa vào giá trị cuối cùng của nhiệm vụ này.
Ý nghĩa của việc sử dụng var
vàlet
var
và let
buộc các lập trình viên khác đọc tất cả các mã can thiệp từ khai báo đến sử dụng cuối cùng và lý do về giá trị của phép gán tại thời điểm đó trong quá trình thực thi của chương trình.
Chúng làm suy yếu lý do máy cho ESLint và các dịch vụ ngôn ngữ khác để phát hiện chính xác các tên biến bị nhầm lẫn trong các bài tập sau và sử dụng lại phạm vi của các tên biến phạm vi bên ngoài trong đó phạm vi bên trong quên khai báo.
Chúng cũng gây ra thời gian chạy nhiều lần lặp trên tất cả các loại tiền mã hóa để phát hiện ra rằng chúng thực sự là các hằng số, trước khi chúng có thể tối ưu hóa chúng. Mặc dù đây là một vấn đề ít hơn so với phát hiện lỗi và tính dễ hiểu của nhà phát triển.
Khi nào sử dụng const
Nếu giá trị của tham chiếu không thay đổi trong quá trình thực hiện, cú pháp đúng để thể hiện ý định của lập trình viên là const
. Đối với các đối tượng, việc thay đổi giá trị của tham chiếu có nghĩa là trỏ đến một đối tượng khác, vì tham chiếu là bất biến, nhưng đối tượng thì không.
" const
" đối tượng
Đối với các tham chiếu đối tượng, con trỏ không thể được thay đổi thành một đối tượng khác, nhưng đối tượng được tạo và gán cho một const
khai báo là có thể thay đổi. Bạn có thể thêm hoặc xóa các mục khỏi một const
mảng được tham chiếu và thay đổi các khóa thuộc tính trên một const
đối tượng được tham chiếu.
Để đạt được các đối tượng bất biến (một lần nữa, làm cho mã của bạn dễ hiểu hơn về con người và máy móc), bạn có thể Object.freeze
đối tượng khai báo / gán / tạo, như sau:
const Options = Object.freeze(['YES', 'NO'])
Object.freeze có ảnh hưởng đến hiệu suất, nhưng mã của bạn có thể chậm vì các lý do khác. Bạn muốn hồ sơ nó.
Bạn cũng có thể gói gọn đối tượng có thể thay đổi trong máy trạng thái và trả về các bản sao sâu dưới dạng giá trị (đây là cách hoạt động của trạng thái Redux và React). Xem Tránh trạng thái toàn cầu có thể thay đổi trong Trình duyệt JS để biết ví dụ về cách xây dựng trạng thái này từ các nguyên tắc đầu tiên.
Khi nào var
và let
là một trận đấu tốt
let
và var
đại diện cho trạng thái đột biến. Theo tôi, chúng chỉ nên được sử dụng để mô hình hóa trạng thái đột biến thực tế . Những thứ như " kết nối còn sống? ".
Đây là những gói được đóng gói tốt nhất trong các máy trạng thái có thể kiểm tra hiển thị các giá trị không đổi đại diện cho " trạng thái hiện tại của kết nối ", là hằng số tại bất kỳ thời điểm nào và phần còn lại của mã của bạn thực sự quan tâm.
Lập trình đã đủ khó với việc soạn thảo các hiệu ứng phụ và chuyển đổi dữ liệu. Biến mọi chức năng thành một máy trạng thái không thể kiểm soát bằng cách tạo trạng thái có thể thay đổi với các biến chỉ chồng chất lên độ phức tạp.
Để giải thích nhiều sắc thái hơn, xem Shun the Mutant - Trường hợp choconst
.