一、繫結事件
1.html元素內繫結
2.js繫結事件
3.事件監聽繫結
1 點我一哈
2 我是js事件
3 我是監聽事件
4
二、定時器
1.settimeout延時器,延時執行,只執行一次
語法:settimeout(callback,delay);
2.清除延時器:cleartimeout(定時器名稱)
3.setinterval計時器,間隔時間執行一次,若不手動清除會一直存在
語法:setinterval(callback,time)
4.清除計時器
語法:clearinterval(callback,time)
三、事件佇列
j**ascript語言的一大特點就是單執行緒,也就是說,同乙個時間只能做一件事。
事件佇列就是把一些不按順序執行的事件放到佇列裡面,然後按照自己制定的順序去執行。
settimeout(()=>,2000)
let n=89;
console.log(n);
//89
//10
四、事件迴圈機制
1.執行棧和執行上下文
全域性執行上下文:任何不在函式內的**在全域性執行上下文中,它會執行兩件事:建立windws全域性物件並設定this的值等於這個全域性物件。
函式執行上下文:當函式被呼叫時,都會建立乙個新的上下文
執行棧:呼叫棧
2.事件迴圈
1)當主線任務在執行時,會形成棧和堆;
2)js從上到下解析,按順序完成同步任務;
3)當呼叫外部api時(settimeout、ajax),會將此類非同步任務掛起,繼續執行執行棧中的任務,等非同步任務返回結果後,再按照執行順序排列到事件佇列中;
4)主線程先將執行棧中的同步任務清空,然後檢查事件佇列中是否有任務,如果有,就將第乙個事件對應的**推到執行棧中執行,若在執行過程中遇到非同步任務,則繼續將這個非同步任務排列到事件佇列中。
5)主線程每次將執行棧清空後,就去事件佇列中檢查是否有任務,如果有,就每次取出乙個推到執行棧中執行,這個過程是迴圈往復的... ...,這個過程被稱為「event loop 事件迴圈」。
console.log(1);settimeout(() =>, 0) ;
}, 0) ;
}, 0);
settimeout(() =>, 0);
}, 0);
console.log('ok');
//輸出:1 ok 2 5 3 6 4
js 事件迴圈,非同步,事件佇列
首先,現附上我查詢資料中用到較好的一張圖 這裡面就對事件迴圈,任務佇列,非同步操作介紹的很詳細.我的理解 較為粗略的一張圖 我認為的事件迴圈的主要邏輯 1.取乙個巨集任務來執行,執行完畢,下一步.2.取乙個微任務來執行,執行完畢,再取乙個微任務來執行,直到微任務全部取完.3.更新ui渲染 概念 巨集...
事件迴圈中事件佇列的順序
同步任務 nexttick 函式佇列 微任務 promise 函式佇列 微任務 timeout,interval定時器任務佇列 巨集任務 i o事件任務佇列,如http請求 檔案讀寫等 巨集任務 immediate任務佇列 注 對於當前正在執行任務所產生的的子任務,不管是什麼型別的,都得等當前任務佇...
事件佇列的理解
在前端的日常工作中,我們可能不會特別關注事件佇列這樣比較抽象的概念,初次接觸事件佇列是在面試的時候被問到,你知道的 一臉懵逼,然後就各種網上搜尋,以下是我的理解,如果有不正確的地方希望大神們指正 寫這篇部落格最主要的是參照了 逆光飛舞 的部落格 第一 首先我們得了解前端工程 js 與 程序 執行緒的...