Cập nhật nội dung chi tiết về Phân Biệt Var Và Let Trong Javascript mới nhất trên website Cuocthitainang2010.com. Hy vọng thông tin trong bài viết sẽ đáp ứng được nhu cầu ngoài mong đợi của bạn, chúng tôi sẽ làm việc thường xuyên để cập nhật nội dung mới nhằm giúp bạn nhận được thông tin nhanh chóng và chính xác nhất.
Từ trước tới giờ, có thể bạn đã quen dùng var để khai báo biến trong JavaScript. Tuy nhiên, từ phiên bản ES6, bạn có thêm một sự lựa chọn nữa là let. Vậy let giống và khác var như thế nào? Bài viết này sẽ giúp bạn phân biệt var và let trong JavaScript. Qua đó, bạn biết cách sử dụng chúng sao cho phù hợp nhất.
Giống nhau
Var và let đều là từ khoá – keyword.
Var và let cùng được dùng để khai báo biến trong JavaScript
Khác nhau
Phạm vi của biến số sử dụng var là phạm vi hàm số hoặc bên ngoài hàm số, toàn cục.
Phạm vi của biến số sử dụng let là phạm vi một khối, xác định bởi cặp {}
Ví dụ phân biệt var và let
function
varvslet
(
)
{
console.
log
(
i)
;
console.
log
(
j)
;
for
(
var
i=
0
;
i<
3
;
i++
)
{
console.
log
(
"i inside "
,
i)
;
}
;
console.
log
(
"i outside "
,
i)
;
console.
log
(
j)
;
for
(
let
j=
0
;
j<
3
;
j++
)
{
console.
log
(
"j inside "
,
j)
;
}
;
console.
log
(
"i outside "
,
i)
;
console.
log
(
"j outside "
,
j)
;
}
varvslet
(
)
;
Let: trong ví dụ trên biến j được khai báo sử dụng let. Bạn có thể thấy rằng biến j chỉ được phép sử dụng trong vòng lặp for. Nếu bạn gọi biến j ngoài vòng lặp for thì đều bị lỗi ReferenceError: j is not defined.
Var: phạm vi của biến var là phạm vi của hàm số chứa phần khai báo biến. Do đó, mặc dù biến i được khai báo trong vòng lặp for, nhưng bạn vẫn có thể gọi đến biến i ở mọi vị trí trong hàm số này. Lúc đầu, giá trị của biến i là undefined, nên khi bạn gọi console.log(i) lần đầu tiên, giá trị in ra là undefined chứ không phải là lỗi ReferenceError: i is not defined.
Nên sử dụng var hay let?
Câu trả lời là cả hai. Mặc dù, việc sử dụng let có vẻ giống với việc khai báo biến trong c/c++. Tuy nhiên, trong nhiều trường hợp, việc sử dụng var giúp code ngắn gọn hơn.
Hy vọng qua bài viết ngắn gọn này bạn có thể phân biệt var và let trong JavaScript.
Cuối cùng, hẹn gặp lại bạn trong bài viết tiếp theo, thân ái!
Tham khảo
Học Javascript 7: Phân Biệt Var, Let Và Const
Block scope là gì?
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.
{ var text = ‘in block scope’ console.log(text) }
Vẫn in ra ‘in block scope’ bình thường.
Khai báo biến với var
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
ES6 let và const
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’
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)
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]’
Cẩn thận với Hoisting
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ể.
Var đã chết? Giờ dùng cái nào?
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:
Mặc định dùng const
Không nên dùng var trong ES6
Chỉ dùng let nếu thay đổi giá trị của biến.
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
Sự Khác Nhau Giữa Var, Let Và Const Trong Javascript
Với việc ra mắt ES6, hai từ khóa khá quan trọng trong JavaScript cũng được giới thiệu là let và const. Trước khi ra đời ES6, cách duy nhất để khai báo một biến trong JavaScript là sử dụng var. Nhưng sự khác biệt giữa var, let và const là gì? Và khi nào chúng ta sử dụng cho phạm vi nào?
1. Var
Như bạn có thể biết, cách thức cũ để khai báo một biến trong JavaScript là sử dụng từ khóa var.
var name = "NhiTT"; console.log(name);Khi bạn log biến name trong console, đầu ra rõ ràng sẽ là NhiTT . Biến name hiện tại là biến có phạm vi global. Sẽ thú vị hơn khi chúng ta thêm một hàm.
function setup() { var name = "Benjamin"; } setup(); console.log(name);Có thể sử dụng các biến có phạm vi toàn cầu bên trong một hàm. Điều này có nghĩa là biến age có thể được sử dụng bên trong hàm setup. Điều này sẽ in ra “NhiTT 16 tủi” trong console.
var age = 16; function setup() { var name = "NhiTT"; console.log(name + age + " tủi"); } setup();Bạn chỉ có thể truy cập các biến có cùng phạm vi hoặc phạm vi cao hơn. Vì vậy, trong một chức năng, bạn có thể truy cập phạm vi toàn cầu. Nhưng, trên toàn cầu, bạn không thể truy cập vào một biến chỉ được tạo trong một hàm.
var age = 16; function setup() { var name = "Benjamin"; age = 15; } setup(); console.log(age);Nó trở nên khó khăn hơn khi var được sử dụng trong một vòng lặp for hoặc trong một câu lệnh if. Vòng lặp for hoặc lệnh if sẽ không tạo ra các biến của riêng chúng.
Điều này có nghĩa là biến có thể truy cập rộng rãi hơn vòng lặp hoặc câu lệnh mà chúng được tạo. Trong ví dụ bên dưới, biến i có phạm vi toàn cục. Điều này sẽ in ra 10 trong console.
for (var i = 1; i <= 10; i++) {2. Let
Let sử dụng phạm vi khối và không phạm vi từ vựng. Điều này có nghĩa là let không quan tâm đến toàn cầu hoặc cục bộ hoặc liệu bạn có ở trong một hàm hay không. Thay vào đó, let quan tâm đến khối bạn đang ở. Một khối về cơ bản là bất cứ thứ gì có dấu ngoặc nhọn. Đây có thể là một hàm, nhưng cũng là một vòng lặp for v hoặc một câu lệnh if.
let i = 5; for (let i = 1; i <= 10; i++) {Trong ví dụ trên, biến i không được cập nhật trong phạm vi toàn cầu; do đó đầu ra sẽ là 5.
Let hữu ích khi bạn muốn có một biến trong phạm vi của nó. Có thể truy cập các biến từ một khối cao hơn, giống như var có thể truy cập các biến từ phạm vi cao hơn.
3. Const
Const hoạt động gần giống như let. Tuy nhiên, sự khác biệt duy nhất là một khi bạn đã gán một giá trị cho một biến const, bạn không thể gán lại nó cho một giá trị mới. Giống như từ khóa implies.
for (const i = 1; i <= 10; i++) {Ví dụ trên sẽ đưa ra một lỗi cho bạn biết rằng bạn đang cố gán giá trị mới cho 1 const.
Const là hữu dụng với bất cứ khi nào bạn biết rằng bạn có một biến mà bạn sẽ cố định. Và bây giờ bạn tự hỏi, tại sao chúng ta lại lưu trữ một giá trị trong một biến có giá trị không thay đổi?
Một phần của điều đó là đúng. Mặt khác, bạn có thể sử dụng nếu để dễ đọc. Bạn có thể chọn hard code một số giá trị trong code của mình ở nhiều nơi, nhưng sử dụng một biến const làm cho mã của bạn dễ bảo trì hơn. Bất cứ khi nào giá trị mã hóa thay đổi, bạn chỉ phải thay đổi biến const, thay vì đi qua toàn bộ mã tìm kiếm giá trị mã hóa cứng đó.
const username = document.querySelect('input[name="username"]').value;Điều tương tự áp dụng cho ví dụ tiếp theo. Bất cứ khi nào bạn đang xử lý các đối tượng lớn, bạn cũng có thể sử dụng const để cải thiện khả năng đọc.
const books = api.data.sources['library'].books;Sử dụng const có thể giúp làm cho code sau này của bạn rõ ràng hơn. Điều này đặc biệt hữu ích khi bạn làm việc trong một nhóm. Nếu ai đó nhìn thấy một mã const, người đó biết rằng giá trị có lẽ không nên thay đổi.
4. Ngoại lệ: Sự kết hợp của const và các đối tượng
Các declaration const tạo ra một tham chiếu chỉ đọc đến một giá trị. Điều đó không có nghĩa là giá trị mà nó giữ là bất biến, chỉ là định danh biến không thể được gán lại.
Điều này có nghĩa là không thể thực hiện được những điều sau vì chúng tôi cố gắng gán lại cho tên người dùng cho biến const.
const user = { 'name': 'NhiTT'}; user = { 'name': 'Truong Thi Nhi'}; console.log(user);Nhưng có thể thay đổi các thuộc tính của đối tượng này. Điều này là do giá trị mà một const nắm giữ không phải là bất biến.
const user = { 'name': 'NhiTT'};5. Khi nào nên sử dụng loại biến nào?
Tôi nghĩ một trong những lý do duy nhất mà bạn nên sử dụng var là khi bạn làm việc trên một base code không hỗ trợ ES6.
Nói chung, let tốt hơn là var vì nó làm giảm phạm vi. Trong hầu hết các trường hợp, bạn sẽ có thể biến tất cả các câu lệnh var thành câu lệnh let mà không có bất kỳ thay đổi ngữ nghĩa nào.
Const được đánh giá là tốt hơn so với let. Từ góc độ kỹ thuật, const không bao giờ là bắt buộc. Mỗi const có thể được thay thế bằng một biến let, nhưng sử dụng const có thể làm cho mã sạch hơn. Trừ khi bạn cần thay đổi giá trị, hãy sử dụng const. Nó bao gồm tất cả lợi ích khi sử dụng let cùng với việc giảm sự hiện diện của các biến chưa được khởi tạo và làm cho mã dễ đọc và thiện cảm hơn. Nếu bạn không chắc chắn liệu mình có cần thay đổi giá trị hay không, hãy biến nó thành một const cho đến khi bạn cần thay đổi nó.
source:
https://medium.com/better-programming/javascript-variables-the-difference-between-var-let-and-const-10efef5d2728
Var, Let Và Const Trong Es6
Mấy bài viết nói về 3 từ khóa này trong JavaScript thì có nhiều rồi, mình chỉ tổng hợp lại cho ngắn để các bạn lười đọc tham khảo nhanh thôi
const
const dùng để khai báo một hằng số – là một giá trị không thay đổi được trong suốt quá trình chạy.
Ví dụ:
const A = 5; A = 10;let
let tạo ra một biến chỉ có thể truy cập được trong block bao quanh nó, khác với var – tạo ra một biến có phạm vi truy cập xuyên suốt function chứa nó.
Ví dụ:
Sử dụng var:
function foo() { var x = 10; if (true) { var x = 20;Sử dụng let:
function foo() { let x = 10; if (true) { let x = 20;Ngoài ra, khi ở global scope (tức là không nằm trong một function nào cả), từ khóa var tạo ra thuộc tính mới cho global object ( this), còn let thì không:
var x = 'global'; let y = 'global'; console.log(this.x);Callback và let
Có một trường hợp dùng let rất hiệu quả đó là sử dụng callback trong một vòng lặp.
Ví dụ nếu dùng var:
for (var i = 0; i < 5; i++) { setTimeout(function(){ console.log('Yo! ', i); }, 1000); }Kết quả sẽ ra gì nào?
Yo! 5 Yo! 5 Yo! 5 Yo! 5 Yo! 5Giá trị của biến i bên trong hàm callback luôn là giá trị cuối cùng của i trong vòng lặp.
Để giải quyết vấn đề này, chúng ta thay var bằng let:
for (let i = 0; i < 5; i++) { setTimeout(function(){ console.log('Yo! ', i); }, 1000); }Output sẽ đúng như mong đợi:
Yo! 0 Yo! 1 Yo! 2 Yo! 3 Yo! 4Khi nào, dùng gì?
Không dùng var trong bất kì mọi trường hợp
Thay vào đó thì dùng let
Dùng const khi cần định nghĩa một hằng số
Bạn đang đọc nội dung bài viết Phân Biệt Var Và Let Trong Javascript trên website Cuocthitainang2010.com. Hy vọng một phần nào đó những thông tin mà chúng tôi đã cung cấp là rất hữu ích với bạn. Nếu nội dung bài viết hay, ý nghĩa bạn hãy chia sẻ với bạn bè của mình và luôn theo dõi, ủng hộ chúng tôi để cập nhật những thông tin mới nhất. Chúc bạn một ngày tốt lành!