1. 程式人生 > >js-宣告前置、作用域、作用域鏈

js-宣告前置、作用域、作用域鏈

宣告前置:JS在執行每一段JS程式碼之前,會有js解析器:先把 var 和 function 宣告的變數前置

作用域:可以理解為是一個執行環境,更通俗一些理解成,在什麼樣的空間範圍內進行讀,寫

作用域鏈:當我們在區域性作用域中,訪問一個變數時,系統首先會在當前作用域中尋找變數var的宣告語句,如找到則直接使用。反之,則繼續向上一級作用域中尋找var的宣告語句,如找到則直接使用,反之,繼續向上一級作用域中去尋找…直到全域性作用域,如找到則直接使用,如未找到則直接在全域性作用域中宣告該變數,這種鏈式查詢關係就是作用域鏈!


JS是一種指令碼語言, JS的執行過程, 是一種翻譯執行的過程,這個翻譯叫“預編譯(預解析))”

JS在執行每一段JS程式碼之前,會有js解析器:先把 var 和 function 宣告的變數前置, 再去按順序逐行執行程式碼

1.宣告前置

eg.




.遇到重名的變數只留一個:變數與函式重名留函式;其餘按順序覆蓋;.script是全域性函式,以段為處理單元,會自上而下解析

2.作用域鏈,由裡到外,自上而下順著鏈爬


eg.


分別等價於

tip:.引數的本質是區域性變數.表示式可以修改預解析的值(+-*/%++--!引數)