全局域變量在局部可見,局部變量在全局不可見
var global_value = 'global value';
func();
console.log(local_value);
function func(){
var local_value = 'local_value';
console.log(global_value);
}
輸出: 1.global value 2.Uncaught ReferenceError: local_value is not defined anonymous function 是以,局部域可以修改全局域變量的值 var global_value = 'global value';
func();
console.log(global_value);
function func(){
global_value = 'local_value';
console.log(global_value);
} 輸出: 1.local_value 2.local_value 上面的例子可作為javascript作用域鍊scope chain的例證 更多scope chain的内容可參考javascript:the definitive guide 深入了解變量作用域一節
局部域重複聲明覆寫全局域
var global_value = 'global value';
func();
console.log(global_value);
function func(){
var global_value = 'local_value';
console.log(global_value);
} 輸出: 1.local_value 2.global_value 此例可作為javascript作用域鍊scope chain的例證
塊級作用域無效 即如if語句中聲明的變量在if語句外可見 func();
function func(){
console.log(inner_value);
if(true){
var inner_value = 'inner_value';
}
console.log(inner_value);
}
輸出: 1.undefined 2.inner_value undefined指聲明了但未定義,可能是定義的相關語句在後面的緣故
隐式聲明預設實作為全局變量,擁有全局作用域 即使在局部域中聲明也是實作為全局域變量 func();
console.log(inner_value);
function func(){
inner_value = 'inner_value';
console.log(inner_value);
}