JavaScript變數可以儲存任何類型資料,包括文字、數字、布林值、陣列和物件
JavaScript可以無宣告變數,就算沒有使用
var
、let
、const
宣告變數,也可以直接使用變數名稱,無宣告變數會被視為全域變數
x = 10;
console.log(x); // 10
function foo() {
x = 10;
}
foo();
console.log(x); // 10
JavaScript早期變數宣告,作用域是函式級別
var name = "Cindy";
console.log(name);
// Cindy
function foo() {
var x = 10;
}
foo();
console.log(x); // x is not defined
var
可以重複宣告也不會出現錯誤,如果有更多變數資料會錯誤連篇,而且作用域就算離開還可以取出值
var x = 10;
var x = 20;
var x = 30;
console.log(x); // 30
// 作用域
for (var i = 0; i < 20; i++) {
}
console.log(i); // 20
var x = 10;
function foo() {
var x = 20;
console.log(x); // 20
}
foo();
console.log(x); // 10
用來宣告區域變數,只能在所在的函式或語句塊中使用
//宣告後可以重新賦予值
let x = 3;
Console.log(x) // 3
x = 6
Console.log(x) // 6
let x = 3;
x = x + 6
Console.log(x) // 9
//不能重複宣告
let x = 3;
let x = 6;
console.log(x); // error
for (var i = 0; i < 20; i++) {
// console.log(i);
}
console.log(i); // i is not defined
因為 var
可以重複宣告,因此要用 let
就不會重複宣告,可以改善程式碼變數錯誤
用來宣告常數,是不能被修改的變數
//不能重新賦予值
const x = 3;
console.log(x) // 3
x = 6;
console.log(x); // Assignment to constant variable.
const x = 3;
const x = 6;
console.log(x); // error
Let
Const
Var
區別變數 | 作用域 | 再宣告 | 初始化 |
---|---|---|---|
var |
函式作用域 | 可以 | 變數宣告時初始化為 undefined |
let |
區塊作用域 | 不可以 | 變數宣告時初始化為 undefined |
const |
區塊作用域 | 不可以 | 數宣告時必須初始化 |
let
或 const
const
var
宣告function foo() {
let x = 10;
console.log(x); // 10
}
foo();
// 在 foo() 函式外使用 x
console.log(x); // x is not defined
// const 宣告常數
const PI = 3.14159;
console.log(PI); // 輸出 3.14159
// var 宣告全域變數
var x = 10;
console.log(x); // 10
// 在其他函式中使用 x
function foo() {
console.log(x); // 10
}
foo();
總之,let
和 const
是 JavaScript宣告變數更好方式,let
和 const
可以幫助避免程式碼一些錯誤,並使程式碼更加清晰
資料來源:JavaScript 變數宣告:var、let、const 的差異?