Không sử dụng var trong javascript
Câu lệnh 8 khai báo một biến phạm vi chức năng hoặc phạm vi toàn cầu, tùy chọn khởi tạo nó thành một giá trị Show
9tên biến. Nó có thể là bất kỳ định danh hợp pháp nào 0 Tùy chọnGiá trị ban đầu của biến. Nó có thể là bất kỳ biểu hiện pháp lý. Giá trị mặc định là 1Ngoài ra, cú pháp Gán cấu trúc cũng có thể được sử dụng để khai báo các biến
Các khai báo của 8, bất kể chúng xuất hiện ở đâu, đều được xử lý trước khi bất kỳ mã nào được thực thi. Điều này được gọi là cẩu và được thảo luận thêm dưới đâyPhạm vi của một biến được khai báo với 8 là bối cảnh thực thi hiện tại của nó và các bao đóng của nó, là hàm bao quanh và các hàm được khai báo bên trong nó, hoặc đối với các biến được khai báo bên ngoài bất kỳ hàm nào, toàn cục. Khai báo biến trùng lặp bằng cách sử dụng 8 sẽ không gây ra lỗi, ngay cả trong chế độ nghiêm ngặt và biến sẽ không mất giá trị, trừ khi thực hiện phép gán khác
Các biến được khai báo bằng cách sử dụng 8 được tạo trước khi bất kỳ mã nào được thực thi trong một quy trình được gọi là cẩu. Giá trị ban đầu của chúng là 1 2Trong bối cảnh toàn cầu, một biến được khai báo bằng cách sử dụng 8 được thêm vào dưới dạng thuộc tính không thể định cấu hình của đối tượng toàn cầu. Điều này có nghĩa là không thể thay đổi bộ mô tả thuộc tính của nó và không thể xóa nó bằng cách sử dụng 8. Tên tương ứng cũng được thêm vào danh sách trên vị trí nội bộ 9 trên (tạo thành một phần của môi trường từ vựng toàn cầu). Danh sách các tên trong 9 cho phép bộ thực thi phân biệt giữa các biến toàn cục và các thuộc tính đơn giản trên đối tượng toàn cầuThuộc tính được tạo trên đối tượng toàn cầu cho các biến toàn cầu, được đặt thành không thể định cấu hình vì mã định danh sẽ được coi là một biến, thay vì thuộc tính đơn giản của đối tượng toàn cầu. JavaScript có tính năng quản lý bộ nhớ tự động và sẽ vô nghĩa nếu có thể sử dụng toán tử 8 trên một biến toàn cục 8Lưu ý rằng trong cả mô-đun NodeJS CommonJS và mô-đun ECMAScript gốc, các khai báo biến cấp cao nhất được đặt trong phạm vi mô-đun và do đó không được thêm làm thuộc tính cho đối tượng chung Đối tượng toàn cầu nằm ở đầu chuỗi phạm vi. Khi cố gắng phân giải tên thành giá trị, chuỗi phạm vi được tìm kiếm. Điều này có nghĩa là các thuộc tính trên đối tượng toàn cầu có thể nhìn thấy thuận tiện từ mọi phạm vi mà không cần phải xác định tên bằng 22 hoặc 23 hoặc 24Vì đối tượng toàn cầu có thuộc tính 25 ( 26), bạn có thể sử dụng đoạn mã sau 4Vì vậy, đối tượng toàn cầu cuối cùng sẽ được tìm kiếm cho các định danh không đủ tiêu chuẩn. Bạn không cần phải gõ 27, bạn chỉ cần gõ 25 không đủ tiêu chuẩn. Hệ quả tất yếu, ở chế độ không nghiêm ngặt, là việc gán cho các định danh không đủ tiêu chuẩn sẽ, nếu không có biến cùng tên nào được khai báo trong chuỗi phạm vi, giả sử bạn muốn tạo một thuộc tính có tên đó trên đối tượng toàn cầu 7Ở chế độ nghiêm ngặt, việc gán cho một mã định danh không đủ tiêu chuẩn ở chế độ nghiêm ngặt sẽ dẫn đến 29, để tránh việc vô tình tạo các thuộc tính trên đối tượng chungLưu ý rằng hàm ý của điều trên, trái ngược với thông tin sai lệch phổ biến, JavaScript không có các biến ngầm định hoặc không được khai báo, nó chỉ có một cú pháp trông giống như vậy. Bởi vì các khai báo 8 được xử lý trước khi bất kỳ mã nào được thực thi, khai báo một biến ở bất kỳ đâu trong mã tương đương với khai báo nó ở đầu. Điều này cũng có nghĩa là một biến có thể được sử dụng trước khi nó được khai báo. Hành vi này được gọi là cẩu, vì có vẻ như khai báo biến được di chuyển lên đầu hàm hoặc mã toàn cầu 0Điều này được ngầm hiểu là 1Vì lý do đó, nên luôn khai báo các biến ở đầu phạm vi của chúng (đầu mã toàn cục và đầu mã chức năng) để rõ ràng biến nào thuộc phạm vi chức năng (cục bộ) và biến nào được giải quyết trên chuỗi phạm vi Điều quan trọng cần chỉ ra là chỉ phần khai báo của biến được nâng lên chứ không phải phần khởi tạo của nó. Việc khởi tạo chỉ xảy ra khi đạt đến câu lệnh gán. Cho đến lúc đó biến vẫn là 1 (nhưng được khai báo) 3Điều này được ngầm hiểu là 0 1 2Điều này tương đương với 3Hãy chú ý đến thứ tự 4Ở đây, 82 và 83 được khai báo trước khi bất kỳ mã nào được thực thi, nhưng việc gán diễn ra sau đó. Tại thời điểm đánh giá 84, 83 tồn tại nên không có 29 nào được ném ra và giá trị của nó là 1. Vì vậy, 82 được gán giá trị không xác định. Sau đó, 83 được gán giá trị 40. Do đó, sau dòng đầu tiên, 41, do đó có kết quả 5Ví dụ tương tự như trên nhưng với một chế độ nghiêm ngặt 6Các biến dường như là toàn cục tiềm ẩn có thể là tham chiếu đến các biến trong phạm vi hàm bên ngoài Tại sao không sử dụng var trong JavaScript?Từ khóa Var
. Theo nguyên tắc chung, bạn nên tránh sử dụng từ khóa var. if a variable is defined in a loop or in an if statement it can be accessed outside the block and accidentally redefined leading to a buggy program. As a general rule, you should avoid using the var keyword.
Có cần thiết phải sử dụng var trong JavaScript không?Luôn khai báo các biến JavaScript với var , let hoặc const. Từ khóa var được sử dụng trong tất cả các mã JavaScript từ 1995 đến 2015. Từ khóa let và const đã được thêm vào JavaScript vào năm 2015. Nếu bạn muốn mã của mình chạy trong các trình duyệt cũ hơn, bạn phải sử dụng var .
Tôi có thể sử dụng cái gì thay vì VAR trong JavaScript?Sử dụng 'let' và 'const' thay vì 'var' . var sử dụng một thứ gọi là 'hoisting', điều này có thể dẫn đến kết quả không mong muốn let và const đều nằm trong phạm vi khối. Điều đó có nghĩa là bạn có thể khai báo chúng trong vòng lặp for hoặc câu lệnh if và chúng sẽ chỉ hợp lệ cho khối đó. . const ngăn việc gán lại biến Tôi có thể khai báo biến không có var trong JavaScript không?Khai báo Biến không có var và để Từ khóa
. Các biến được khai báo không có từ khóa var sẽ trở thành biến toàn cục, bất kể chúng được khai báo ở đâu. Truy cập Phạm vi biến trong JavaScript để tìm hiểu về nó. a value must be assigned to a variable declared without the var keyword. The variables declared without the var keyword become global variables, irrespective of where they are declared. Visit Variable Scope in JavaScript to learn about it. |