iT邦幫忙

第 12 屆 iT 邦幫忙鐵人賽

DAY 8
0
自我挑戰組

溫故知新 JavaScript系列 第 8

Day8- 全域變數與區域變數

https://ithelp.ithome.com.tw/upload/images/20200921/20129439ZGV4FlFS0O.jpg

直接講重點!把變數寫在 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;

那為什麼不乾脆就都寫全域變數就好,幹嘛還要多一個區域變數!
就我目前學習上的理解是這樣的,因為每次建立一個全域變數都會在瀏覽器的記憶體內佔一個空間,如果每個變數都只用一次結果都寫成全域變數,會造成記憶體被使用過多,網頁也會跑的很慢,所以只會在一個函式內用到的變數使用區域變數就可以了。

以上是我對於全域與區域變數的理解,如有錯誤還請各位前輩給予修改意見。


上一篇
Day7- function 函式簡介
下一篇
Day9- 淺談 var 與 hoising 觀念
系列文
溫故知新 JavaScript30

尚未有邦友留言

立即登入留言