iT邦幫忙

2022 iThome 鐵人賽

DAY 3
0
自我挑戰組

學習JavaScript的基礎概念系列 第 3

Day 3 函式範圍鏈scope chain

  • 分享至 

  • xImage
  •  

範圍代表能取用變數的地方,「鏈」是外部環境參照的連結 。

範圍鏈:
當你需要的程式碼無法找到變數,它會到外部環境尋找變數,一路往下找,和函數在哪裡被寫出來無關。

範例1:
執行結果是
1

function b(){
    console.log(myVar);
}

function a(){
    var myVar=2;
    b();
}

var myVar=1;
a();

因為function b和var myVar=1是在同一層
function b和function a不在同一層


範例2:
執行結果是
2
b is not defined

function a(){
    function b(){
        console.log(myVar);
    }
    var myVar=2;
    b();
}

var myVar=1;
a();
b();

function b在function a裡面,因為b的物理位置在a裡,所以這次的外部詞彙環境是a。


範例3:
執行結果是
1

function a(){
    function b(){
        console.log(myVar);
    }
    b();
}

var myVar=1;
a();

因為function b裡沒宣告myVar,所以會先往外到function a找,function a找不到才會往外找,結果是1。

要先創造function a才要會造function b,因為b在a裡面,如果在全域環境呼叫b,不會找到a裡面。


上一篇
Day2 JavaScript函式特性、同步&非同步
下一篇
Day4 呼叫函式執行方式
系列文
學習JavaScript的基礎概念30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言