一、var的基本語法
var是JavaScript中用於聲明變量的關鍵字,語法如下:
var 變量名 = 初始值; // 聲明並初始化
var 變量名; // 聲明但不初始化
二、var的主要特性
1. 函數級作用域
var聲明的變量具有函數級作用域,而不是塊級作用域(如if、for等語句塊)。
function testVar() {
if (true) {
var x = 10; // 在整個函數內都可用
}
console.log(x); // 輸出10,而不是報錯
}
testVar();
2. 變量提升(Hoisting)
使用var聲明的變量會被"提升"到函數作用域頂部,但初始化保持在原位置。
console.log(a); // 輸出: undefined
var a = 5;
console.log(a); // 輸出: 5
等價於:
var a; // 聲明被提升
console.log(a); // undefined
a = 5; // 初始化保持在原位置
console.log(a); // 5
3. 可重複聲明
使用var可以對同一個變量多次聲明,後面的聲明會覆蓋前面的聲明。
var message = "Hello";
var message; // 合法,但不會改變message的值
console.log(message); // 輸出: "Hello"
var count = 5;
var count = 10; // 合法,覆蓋之前的值
console.log(count); // 輸出: 10
三、var的使用示例
1. 聲明變量並初始化
var age = 25; // 聲明並初始化
var name = "John"; // 字符串類型
var isStudent = true; // 布爾類型
var price = 9.99; // 數值類型
2. 聲明多個變量
var x = 1, y = 2, z = 3; // 聲明並初始化多個變量
var a, b, c; // 聲明但不初始化
a = 10;
b = 20;
c = 30;
3. 聲明變量後賦值
var score;
score = 85; // 賦值
console.log(score); // 輸出: 85
4. 未使用var聲明變量(全局變量)
function test() {
name = "Alice"; // 未使用var,創建全局變量
}
test();
console.log(name); // 輸出: "Alice"
console.log(window.name); // 輸出: "Alice"(在瀏覽器環境中)
四、var的注意事項
- 避免在函數內部不使用var直接賦值:這會創建全局變量,可能導致難以調試的問題。
- 變量提升可能導致意外行為:由於變量聲明被提升到作用域頂部,代碼執行順序與書寫順序不一致。
- 在ES6之後,推薦使用let和const:var的函數作用域和變量提升特性在現代JavaScript開發中容易導致問題,let和const提供了更好的作用域管理。
五、var vs let vs const
|
特性
|
var
|
let
|
const
|
|
作用域
|
函數級
|
塊級
|
塊級
|
|
變量提升
|
是
|
否
|
否
|
|
重複聲明
|
允許
|
不允許
|
不允許
|
|
重新賦值
|
允許
|
允許
|
不允許
|