if (true) { var text = 'in if statement' }
console.log(text)
Đây có thể gọi là cái ngáo đá nhất khi mới học Javascript, khi nhìn thấy code trong dấu { }, ta thường nghĩ là sẽ tạo ra scope mới. Nhưng trong Javascript, chỉ có function mới có thể tạo ra Execution Context mới.
If else, vòng lặp, vv đều không thể thay đổi scope của code được. Kiểu như Javascript nó xem { } như người vô hình vậy. Bạn có thể xài free-standing blocks như dưới đây được luôn:
{ var text = 'in block scope' console.log(text) }
Vẫn in ra 'in block scope' bình thường.
Khai báo chồng được luôn:
var text = 'niviki.com'
var text = 'niviki'
console.log(text)
Mọi người hay nhầm chỗ này:
for ( var count = 0; count < 3; count++ ){
}
console.log(count)
count \= 3 sau khi ra khỏi for
Phiên bản ES6 của Javascipt giới thiệu 2 cách khai báo mới là let và const, chúng có những điểm khác biệt sau:
Không khai báo chồng lên như var được
let text = 'niviki.com'
var text = 'niviki' // error let text = 'niviki' // error
let và const gắn với block scope
for ( let count = 0; count < 3; count++ ){
}
if (true ){ const email = '[email protected]' }
console.log(count) // count is not defined console.log(email) // email is not defined
const không thay đổi được giá trị, let thì đổi thoải mái con gà mái:
let text = 'niviki.com' const email = '[email protected]'
text = 'niviki' email = '[email protected]' // Uncaught TypeError: Assignment to constant variable.
const và let không hoisting như var:
console.log(text)
let text = 'niviki.com'
Kết quả sẽ là: text is not defined
Tại sao?
Nếu bạn theo dõi những bài trước thì có thể giải thích dễ dàng rồi. Vì có global execution context nên biến khai báo với var được tạo trong execution context đó. Còn với biến được khai báo với const và let thì không thể.
Nếu bạn search 'should I use var let const in Javascript' sẽ ra một đống bài, anh hùng khắp nơi cùng tranh luận. Mình thấy có một bài giải thích hay về vấn đề này:
Theo anh này cũng đúng vì code React Native cũng theo style này
Nói chung tùy phong cách mỗi người, code miễn sao không bug là được
NIVIKI.COM | Telegram | Twitter
Thất nghiệp. Đang rủ rê nhiều người thất nghiệp. Hy vọng với NIVIKI.COM có thể lan toả tinh thần thất nghiệp đến với nhiều người hơn nữa