Js檔案執行的過程

2022-06-17 13:06:09 字數 1154 閱讀 8860

執行檔案的時候會先建立乙個全域性執行上下文

它由兩部分組成

執行檔案分為兩個過程

執行階段

this 當建立全域性上下文或者函式上下文的時候會被建立

const x = 'x'

function test()

test()

在呼叫test的時候會建立函式執行上下文

我們執行**是在乙個執行棧中新增和彈出,出現函式的時候會建立乙個新的執行上下文新增到執行棧中,當新進來的執行上下被執行結束後推出棧中,如果函式中呼叫另外乙個函式則會巢狀生成函式執行上下文,例如下面的則會在執行棧中新增, 從下到上依次是: 全域性上下文、 test函式執行上下文、 test2函式執行上下文

const x = 'x'

function test()

function test2()

test()

example:

const name = 'kangkang'

function showname(name)

showname(name)

對於作用域來說,如果巢狀內的函式作用域沒有使用的變數,它將往上查詢最近的父級上下文,一直到全域性上下文

function test(value) 

}let add = test(3)

let addresult = add(2)

console.log(addresult)

test函式中返回了乙個test2函式,add則是乙個函式add = funtion test2(y),addresult = 3 + 2

建立全域性上下文 分配變數、執行全域性上下文到test(3)被執行到的時候建立乙個新的函式上下文

函式內建立的變數沒有帶了let const var 則會預設新增到全域性上下文的全域性物件上,而頂層建立的var 等變數會自動新增到 全域性上下文中的全域性物件上[瀏覽器上面是 window, node是global object ]

funtion test() 

var y = 'bb'

使用this指明當前實在那個作用域內使用

js執行過程

執行過程 1.宿主環境 瀏覽器 把一段 給js引擎 js引擎按順序執行 因為是宿主環境發起,這也是一條巨集任務 2.需要知道每個巨集觀任務尾部會跟著微任務佇列 當有微觀任務出現,會把他放在微任務佇列中,在上一步的巨集任務執行完後再執行 3.若有巨集觀任務出現,會放入巨集觀任務佇列中,等待上一步微任務...

js 函式執行過程

函式執行過程中 1.每使用乙個變數,函式都會由近到遠的遍歷自己的好友列表中的作用域物件。2.如果在離自己近的格仔中找到了區域性變數,就優先使用區域性變數,不再去全域性找。3.如果在離自己近的格仔中沒找到要用的區域性變數,才被迫去全域性找,如果在全域性找到了想用的變數,則本次修改結果,會影響全部變數的...

js的解析與執行過程

當輸入如下 時候 var a 1 function crli crli 1結果為 1 當改變下面 時候 var a 1 function crli crli undefined結果為 undefined 這是為什麼呢?js解析與執行過程一共有2個階段,乙個預處理階段,乙個是執行階段 可以看成全域性預...