{} 不建立新作用域(C++/Java 有)。if/for/while 區塊內 var 宣告實為函數作用域。
var a = "global";
function f() {
var a = "local";
a += " modified";
}
// 外部 a 不受影響
var 宣告,建立變數並初始化為 undefined。var 同樣提升,無論條件真假。function f() {
x = 10; // 未用 var → 隱性全域變數(嚴格模式拋錯)
}
嚴格模式 ("use strict") 禁用隱性全域,強制宣告。
var a = 100;
function tweak() {
var b = 0;
b = a; // 此時 a 為 undefined(局部 a 已提升但未賦值)
var a = 42; // 實際賦值在這行
if (false) { var a = 123; } // 提升發生,但不執行
}
tweak();