Một biến được tạo ra tại thời điểm bạn tuyên bố/sử dụng nó. Nếu bạn bỏ qua từ khóa var thay vì biến được tạo tự động trong phạm vi toàn cục. Vì vậy, bạn tạo ra một tác dụng phụ. Điều này thường tránh được.
Giả sử bạn sử dụng các biến toàn cục và sau đó bạn đã chọn tên biến mà một số phần khác của phần mềm đã thực hiện. Điều này sẽ dẫn đến một tình huống mà các đoạn mã ghi đè lên các giá trị của chúng. Điều này tạo ra lỗi và phần lớn thời gian khó gỡ lỗi. Trong ví dụ của bạn, bạn có thể ghi đè lên biến toàn cầu x mà một phần mềm khác đang sử dụng.
Sử dụng var cũng nhanh hơn. Nếu bạn truy cập vào một biến toàn cầu, nó phải quét tất cả các phạm vi đến phạm vi toàn cầu cho tên biến. Bằng cách sử dụng var nó được ràng buộc với phạm vi địa phương của bạn.
Thực hành tốt là luôn sử dụng var. Hoặc tốt hơn: tốt nhất là chọn phạm vi thu hẹp nhất cho các biến của bạn. Bây giờ bạn có toàn cầu và var. Một khai báo var có thể nhìn thấy trong toàn bộ hàm bất kể bạn khai báo nó ở đâu. Trong javascript 1.7 có từ khóa mới được giới thiệu: let. Hãy thu hẹp phạm vi hơn nữa. Nếu bạn khai báo vòng lặp của bạn với
for(let x = 0; x < 100; i++) {}
so với x chỉ hiển thị trong khối {}.
Nguồn
2009-04-26 11:08:11
Bất kỳ biến nào không được khai báo bằng "var" sẽ luôn là biến toàn cục. Đây là mục nhập MDC trên var: https://developer.mozilla.org/En/Core_JavaScript_1.5_Reference/Statements/Var – cdmckay
Nó có thể trông đẹp hơn, nhưng JavaScript không có phạm vi khối, do đó không có vấn đề gì nếu bạn khai báo 'x' bên trong hoặc bên ngoài vòng lặp 'for'. (JS 1.7 giới thiệu từ khóa 'let', xem câu trả lời của noha.) –
+1 để luôn thêm var. Tôi đã nhìn thấy nhiều trường hợp trong đó một vòng lặp sử dụng 'i' gọi một hàm với vòng lặp riêng của nó bằng cách sử dụng 'i', nơi cả hai cập nhật toàn cầu 'i'. Nó có thể đi không được chú ý trong một số trường hợp nhưng hoàn toàn lộn xộn những thứ khác trong những người khác. – scunliffe