直接講重點!把變數寫在 function 裡面就叫做區域變數,寫在外面就叫做全域變數,直接來看下面的程式碼。
//區域變數
function count(oneNum,twoNum){
var total = oneNum + twoNum;
console.log('總計'+ total +'元')
}
count(10,10);
console.log(total); // total is not defined
透過瀏覽器的檢查工具可以看到 console.log(total); 結果是找不到 total,原因是變數是寫在 function 這就是區域變數,區域變數的特性是當執行完函式內的變數,這個變數就會被釋放出來就不存在了,因此在後面再去呼叫這個變數就會顯示找不到。
但今天如果我們改寫成這樣
// 全域變數
var total;
function count(oneNum,twoNum){
total = oneNum + twoNum;
console.log('總計'+ total +'元')
}
count(20,6);
console.log(total);
把變數寫在外面,這樣雖然在函式內沒有建立變數,但他會去外面找看有沒有建立變數的地方,結果有找到在後面的 console.log(total)就會出現 26。
26 這個數字是有執行 count(20,6); 在函式內又有這個算式 total = oneNum + twoNum;
那為什麼不乾脆就都寫全域變數就好,幹嘛還要多一個區域變數!
就我目前學習上的理解是這樣的,因為每次建立一個全域變數都會在瀏覽器的記憶體內佔一個空間,如果每個變數都只用一次結果都寫成全域變數,會造成記憶體被使用過多,網頁也會跑的很慢,所以只會在一個函式內用到的變數使用區域變數就可以了。
以上是我對於全域與區域變數的理解,如有錯誤還請各位前輩給予修改意見。