Javascript作用域

函式作用域

以var開頭宣告的變數為函式作用域

範例

1. var a = 10;
2. var b = "local";

變數提升

Javascript沒有區域作用域變數

if(false){
    var a = 10;
}

相當於

var a;
if(false){
       a = 10;
}

為了不產生混淆,有些人會將函式變數放在最前面,以凸顯其作用域

全域作用域

其他不以var開頭的變數為全域作用域,程式所有地方都看得見

範例

1. g = "global";

全域物件

全域變數事實上為全域物件的屬性

g = "abc";

相當於

window.g = "abc"; //一般瀏覽器
global.g = "abc"; //nodejs

除了函式庫提供者外,一般使用者請儘量以var來宣告變數,不要汙染全域物件