iT邦幫忙

2022 iThome 鐵人賽

DAY 13
0

在介紹變數時有提到函式內作用、區域內作用,也就是本篇文會介紹的內容:

  • 區域變數、全域變數介紹、差別
  • 範例

範圍

JavaScript中變數作用的範圍分為區域變數、全域變數,而影響變數有效範圍的最小單位是function。

以簡易的敘述來介紹範圍:

小狗想要在學校圖書館找到一本論文

順利訪問:在圖書館內詢問服務台,此時書的位置是在作用範圍內

不順利訪問:在走廊詢問路人:我想要的書XXX在哪邊呢?此時需要的信息與索取訊息的位置不同,路人表示問號(??

兩者差別

  • 區域變數:在function中宣告的變數,只能提供所屬函式內使用,無法在函式外呼叫
  • 全域變數:不在特定範疇內,可在程序任何位置被訪問
let count = 0; //宣告記錄用

function test(){ // 
	count++; //在函式中使用count,而函式中無count的值,因此向外尋找
}

test(); // 找到test的程式碼並執行

console.log(`紀錄${count}次`)

在這個範例中可以發現function可以讀取外層已宣告的變數,當此函式外層找不到時,會再往下一層外層尋找,若仍找不到則會出現錯誤訊息。

多層的變數宣告

let a = 1; // 於最外層的變數宣告

function x() { 
  let b = 2; 
	console.log(b);
  function y() {
    let c = 3; 
		console.log(c);
    function z() {
      let d = 4; 
			console.log(d);
			console.log(c);
    }
    z();
  }
  y();
}
x();
console.log(a); // 1
console.log(b); // b is not defined
console.log(c); // c is not defined
console.log(d); // d is not defined

在這個範例中只有a是全域變數,因外層無法取得內層宣告的變數,因此我們無法在函式外訪問b、c、d的變數

此外也可以看到在y( )、z( )中皆可訪問變數c的值

以上為本次範圍的介紹,若有問題歡迎指教!


上一篇
【Day12】函數function
下一篇
【Day14】陣列array
系列文
喜歡打程式嗎?從JavaScript基礎來進行興趣初探!30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言