Khai báo var và let trong javascript
Một trong những tính năng nổi bật của ECMAScript 2015 đó là sự bổ sung let và const phục vụ cho việc khai báo biến dữ liệu. Vậy sự khác biệt giữa biến khai báo dùng let và biến khai báo dùng var là gì, thì ở bài viết này chúng ta sẽ cùng tìm hiểu . Show ECMAScript 2015ES2015 đã giới thiệu 2 keywords mới quan trọng là: 2 và 3.Hai từ khóa này cung cấp các biến Block Scope (và constant) trong JavaScript. Trước ES2015, JavaScript chỉ có 2 loại phạm vi: phạm vi toàn cục (Global Scope) và phạm vi của hàm (Function Scope). Global ScopeNhững biến được khai báo bên ngoài bất kì một hàm sẽ có phạm vi toàn cục. Ví dụ:
Biến toàn cục có thể được truy cập từ bất cứ đâu trong chương trình JavaScript . Function ScopeBiến được khai báo cục bộ (bên trong một hàm) sẽ có phạm vi cục bộ. Ví dụ:
Biến cục bộ chỉ có thể được truy cập từ bên trong hàm nơi chúng được khai báo. JavaScript Block ScopeBiến được khai báo với từ khóa 4 không thể có Block Scope.Biến được khai báo bên trong một block (block là code trong dấu ngoặc nhọn {} ) có thể được truy cập từ bên ngoài block. Ví dụ:
Trước ES2015 JavaScript không có Block Scope. Biến được khai báo với từ khóa 2 có phạm vi Block Scope.Biến được khai báo bên trong một block {} không thể được truy cập từ bên ngoài block: Ví dụ:
Redeclaring (khai báo trùng lặp)Khai báo lại một biến bên trong một block với từ khóa 4 sẽ ảnh hưởng biến đó bên ngoài block:
Khai báo lại một biến bên trong một block với từ khóa 2 sẽ không ảnh hưởng đến biến đó bên ngoài block:
Loop ScopeSử dụng 4 trong một vòng lặp :
Sử dụng 2 trong một vòng lặp :
Trong ví dụ sử dụng 4, biến i được khai báo lại trong vòng lặp sẽ thay đổi giá trị trước đó của biến i bên ngoài vòng lặp.Trong ví dụ sử dụng 2, biến i được khai báo trong vòng lặp sẽ không thay đổi giá trị trước đó của biến i bên ngoài vòng lặp.Function ScopeBiến được khai báo với 4 và 2 là tương tự nhau khi được khai báo bên trong một hàm.Cả hai sẽ có Function Scope:
Global ScopeBiến được khai báo với 4 và 2 là tương tự nhau khi được khai báo bên ngoài một block.Cả hai sẽ có Global Scope: 0 1Biến Global trong HTMLVới JavaScript, phạm vi toàn cục là môi trường JavaScript. Trong HTML, phạm vi toàn cục là đối tượng window. Biến global được xác định bằng từ khóa 4 thuộc về đối tượng window.Ví dụ: 2Biến global được xác định bằng từ khóa 2 không thuộc về đối tượng window. 3Redeclaring (khai báo trùng lặp )Redeclaring một biến JavaScript với 4 là được phép ở bất cứ đâu trong chương trình: 4Redeclaring một biến kiểu 4 với 2, trong cùng phạm vi, hoặc cùng block, là KHÔNG được phép: 5Redeclaring một biến kiểu 2 với 2, trong cùng phạm vi, hoặc cùng block, là KHÔNG được phép: 6Redeclaring một biến kiểu 2 với 4, trong cùng phạm vi, hoặc cùng block, là KHÔNG được phép: 7Redeclaring một biến với 2, trong một phạm vi khác, hoặc một block khác, là được phép: 8HoistingBiến kiểu 4 sẽ bị hoisting và có thể được khởi tạo bất cứ lúc nào.Thế nào là hoisting? Hoisting là cách javascript kéo tất cả các khai báo biến lên trên scope hiện tại. 9Sau khi hoisting đoạn code trên được viết lại như sau: 0Biến kiểu 2 sẽ bị hoisting nhưng không được khởi tạo. 1Lời kếtTrên đây là những kiến thức về biến 2 và biến 4 trong Javascript, thông qua bài viết hi vọng các bạn sẽ biết cách khai báo biến một cách hợp lí hơn. Cảm ơn các bạn đã đọc bài viết, nếu các bạn thấy hay thì ủng hộ giúp mình, có bất kì ý kiến đóng góp gì thì mong các bạn để lại comment ở dưới để chúng ta cùng thảo luận. |