JS的執行機制

2021-09-23 13:16:52 字數 743 閱讀 2825

1.當瀏覽器(它的核心/引擎) 渲染和解析js的時候,會提供乙個供js**執行的環境,我們把這個環境

稱為 全域性作用域 (global/window scope)

2 **自上而下執行 (之前還有乙個變數提公升階段)

基本資料型別的值會儲存在作用域下

var a =12;

1)首先開闢乙個空間儲存12

2)在當前作用域中宣告乙個變數a (var a)

3)讓宣告的變數和儲存的12進行關聯(把儲存的12賦值給a=>賦值操作叫做定義)

基本資料型別(也叫做值型別),是按照值來操作的;把原有的值複製乙份?

放到新的空間或者位置上,和原來的值沒有關係。

引用資料型別的值不能直接儲存到當前的作用域下(因為儲存的內容過於複雜)

物品們需要先開闢乙個新的空間(理解為倉庫),把內容儲存到這個空間中

var obj1 =;

1)首先開闢乙個新的記憶體空間,把物件中的鍵值對依次儲存起來(為了保證後面可以找到這個空間,此空間有乙個16進製制的位址)

2)宣告乙個變數

3)讓變數和空間位址關聯在一起(把空間位址賦值給變數)

但是原來的空間沒有被轉殖。還是乙個空間,這樣就出現多個變數關聯的是相同空間,相互之間就會存在影響了。

棧記憶體:本身是乙個供js**執行的環境 所有的基本型別值都會直接的在棧記憶體中開闢乙個位置進行儲存

堆記憶體: 用來儲存引用型別中的資訊值的用物件儲存的是健值對 函式儲存的是**字串

JS執行機制

js是單執行緒的,settimeout和setinterval是非同步任務,要掛起,不先執行,等同步任務完成之後,再去處理非同步任務 console.log 1 settimeout function 0 console.log 3 console.log 4 輸出 1 3 4 2console.l...

JS執行機制

輸出結果為 1,2,3 js是從上到下執行的 js是單執行緒的,即在同一時間只能做一件事情 遇到同步程式,直接執行 遇到非同步程式,先掛起,等同步程式執行完畢後再執行 同步佇列 優先順序最高 非同步佇列 遇到非同步佇列先掛起,等同步佇列執行完後,再選擇執行非同步佇列的某個 settimeout中的時...

JS執行機制

js單執行緒 在同一時間js只能做一件事。為什麼是單執行緒?如果多執行緒,同時操作乙個dom會出問題。非阻塞 event loop 事件迴圈 任務佇列 同步任務佇列要優先於非同步任務佇列處理。非同步任務被分為巨集任務和微任務。常見的非同步任務分類如下 巨集任務 定時器系列,dom事件 ui互動事件 ...