js 變數對象 範圍鏈,js變數對象

來源:互聯網
上載者:User

js 變數對象 範圍鏈,js變數對象

可執行代碼:全域、函數、eval
執行代碼時建立的上下文類型:全域上下文、函數上下文、eval上下文
執行內容(EC)屬性:變數對象(vo)、this、範圍鏈(sc)
執行內容棧

變數對象

用來儲存:變數、聲明式函數、形參

  • 全域對象:變數、聲明式函數都存在window對象裡面
  • 啟用物件:Arguments Object

    • callee
    • length
    • [0]……[length-1]
  • 變數執行個體化
    優先順序:聲明式函數>函數形參>變數
    (執行個體化時添加的變數不可刪)

var a=10; delate  //不可刪window.a; delate  //可刪
代碼執行步驟:
  • 進入上下文
    • 初始化this 範圍鏈 變數對象
    • 變數執行個體化
  • 代碼執行
範圍鏈

範圍鏈可以看做一個數組

  • 全域內容相關的範圍鏈 [全域對象]
  • 函數內容相關的範圍鏈 [當前啟用物件+ function.[[scope]] ]

with 可以臨時改變範圍鏈,因為多尋找了一次變數,可能導致效率變低。

用一個例子來描述一下代碼執行過程

EC:Execution Context 上下文
VO:variable objec 變數對象
SC:scope chain 範圍鏈
AO:activation object 啟用物件

var y = 10;function test(){    var y = 2;    return function(){          alert(y);    }}var fun = test();fun();

end

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.