日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

javascript异步机制 — call stack

發布時間:2024/8/1 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 javascript异步机制 — call stack 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

代碼在運行過程中,會有一個叫做調用棧(call stack)的概念。調用棧是一種棧結構,它用來存儲計算機程序執行時其活躍子程序的信息。(比如什么函數正在執行,什么函數正在被這個函數調用等等信息)。調用棧是JS引擎執行程序的一種機制。程序每調用一層函數(方法),引擎就會生成它的棧幀,棧幀里面保存了函數的執行上下文,然后將它壓入調用棧。棧是一個后進先出的結構,直到最里層的函數執行完,引擎才開始將最后加入的棧幀從棧中彈出。

函數調用會在內存形成一個“調用記錄”,又稱“調用幀”(call frame),保存調用位置和內部變量等信息。如果在函數A的內部調用函數B,那么在A的調用幀上方,還會形成一個B的調用幀。等到B運行結束,將結果返回到A,B的調用幀才會消失。如果函數B內部還調用函數C,那就還有一個C的調用幀,以此類推。所有的調用幀,就形成一個“調用棧”(call stack)

const bar = () => console.log('bar')const baz = () => console.log('baz')const foo = () => {console.log('foo')bar()baz() }foo()


每次迭代中的事件循環都會查看調用堆棧中是否有東西并執行它直到調用堆棧為空:

有異步任務時call stack 的執行順序

const bar = () => console.log('bar')const baz = () => console.log('baz')const foo = () => {console.log('foo')setTimeout(bar, 0)baz() }foo()


總結

以上是生活随笔為你收集整理的javascript异步机制 — call stack的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。