ES6 variables
- ES6 có thể cách khai báo giá trị cho một biến bằng cách sử dụng:
var
,let
,const
. Tùy vào điều kiện cụ thể mà sử dụng cách khai báo cho phù hợp.var
đã có từ các phiên bản Javascript trước đây, khai báo có 2 dạng toàn cục - global (ảnh hưởng mọi nơi) và địa phương - local (chỉ ảnh hưởng bên trong function).let
có từ phiên bản ES6, sử dụng nhưvar
, tuy nhiên có tác dụng phạm vi bên trong một khối (như bên trong câu điều kiện if, vòng lặp for, ...).const
sử dụng nhưlet
, tuy nhiênconst
có giá trị không đổi trong suốt ứng dụng.
- Để hiểu rõ hơn về
var
,let
,const
ta xem các trường hợp bên dưới nhé.
ES6 khai báo giá trị với var
Khai báo toàn cục
Biến được khai báo sẽ ảnh hưởng trong toàn bộ ứng dụng.
var x = 10; function myFnc(){ console.log(x); /* output: 10, x có ảnh hưởng tới Function */ } console.log(x); /* output: 10, x có ảnh hưởng khắp nơi */ myFnc();
- Xem kết quả: nhấn F12, chọn Console.
- Ta thấy
x
ảnh hưởng cả bên trong và bên ngoài function.
Khai báo địa phương
Biến được khai báo chỉ ảnh hưởng trong function được khai báo.
var x = 10; function myFnc(){ var y = x + 5 /* y được khai báo trong Function */ console.log(y); /* output: 15, y chỉ có ảnh hưởng bên trong Function */ } console.log(y); /* output: Error */ myFnc();
- Ta thấy
y
được khai báo bên trong function nên chỉ ảnh hưởng bên trong function, nếu sử dụng bên ngoài sẽ báo lỗi.
ES6 khai báo giá trị với let
Để hiểu rõ, trước tiên ta xét var
bên trong câu điều kiện if
.
var với khối (block)
var x = 10; if (x === 10) { var x = 20; /* x được gán giá trị mới là 20 */ console.log(x); /* output: 20 */ } console.log(x); /* output: 20 */
x
bên trong câu điều kiệnif
sẽ cho kết quả 20.x
bên ngoàiif
sẽ bị ảnh hưởng kết quả từ bên trongif
nên cũng cho kết quả 20.
let với khối (block)
let x = 10; if (x === 10) { let x = 20; /* x được let với giá trị mới là 20 */ console.log(x); /* output: 20, giá trị mới chỉ có tác dụng trong if */ } console.log(x); /* output: 10, x bên ngoài if, nên không bị ảnh hưởng giá trị mới */
x
bên trong câu điều kiệnif
sẽ cho kết quả riêng là 20.x
bên ngoàiif
sẽ cho kết quả riêng (được gán ban đầu) là 10.
ES6 khai báo giá trị với const
Sử dụng đơn giản như sau:
const x = 10; console.log(x); /* output: 10 */
Tuy nhiên nếu đặt lại const tương tự sẽ báo lỗi:
const x = 10; console.log(x); /* output: 10 */ if (x === 10) { x = 20; console.log(x); /* output: Error */ }
const
chỉ mang duy nhất một giá trị, nếu giá trị thay đổi sẽ báo lỗi.