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
Bài viết liên quan
[Case Study] - StatcWeb.Studio dùng nocode để làm tool nocode: 200h - 0 sales - 5 min(s) read - published on January 24, 2021[Case Study] Bán No-code MVP làm trong 100h giá $5000 - 11 min(s) read - published on January 15, 2021Chi tiết mình validate idea với nocode - 3 tuần 60 sales - $567 - 7 min(s) read - published on December 15, 2020Do things that don't scale - Lời khuyên tốt nhất để validate idea làm app - 2 min(s) read - published on November 22, 2020GPT-3 sẽ là phát minh quan trọng kể từ Blockchain - 4 min(s) read - published on September 15, 2020#6 - NoCode MVP - Tổng kết - 5 min(s) read - published on August 22, 2020#5 - NoCode MVP - Buông bỏ để hạnh phúc - 2 min(s) read - published on July 28, 2020#4 - NoCode MVP - Ý tưởng. Một lần chơi lớn - 4 min(s) read - published on July 2, 2020#3 - NoCode MVP - Sức mạnh của Bubble.io - 5 min(s) read - published on June 29, 2020#2 - NoCode MVP - Tại sao là NoCode và tương lai của nó - 7 min(s) read - published on June 28, 2020