js執行是單執行緒,並不是說整個瀏覽器都是單執行緒的,姑且就成為單執行緒吧
js單執行緒的原因是為了避免多執行緒操作dom,引發的併發問題,dom屬於基礎資料,從多執行緒上講,對它的操作要加事物,而js的操作最初就是為了操作dom,嗯,幸好是單執行緒的,總之一句話,凡是能夠修改dom的一定得同步
客戶端js時間線
1、建立document物件,開始解析web頁面。建立htmlhtmlelement物件,新增到document中。這個階段document.readystate = 'loading'。
2、遇到link外部css,建立執行緒載入,並繼續解析文件。併發
3、遇到script外部js,並且沒有設定async、defer,瀏覽器建立執行緒載入,並阻塞,等待js載入完成並執行該指令碼,然後繼續解析文件。js擁有修改dom的能力-->domcument.write
4、遇到script外部js,並且設定有async、defter,瀏覽器建立執行緒載入,並繼續解析文件。
async屬性的指令碼,指令碼載入完成後立即執行。
defter==丟置尾部。
document.createelement('script')的方式動態插入script元素來模擬async屬性,實現指令碼非同步載入和執行。
5、遇到img等,瀏覽器建立執行緒載入,並繼續解析文件。併發
6、當文件解析完成,document.readystate = 'interactive'。
7、文件解析完成後,所有設定有defer的指令碼會按照順序執行。(注意與async的不同)
8、document物件觸發domcontentloaded事件,這也標誌著程式執行從同步指令碼執行階段,轉化為事件驅動階段。
9、當所有async的指令碼載入完成並執行後、img等載入完成後,document.readystate = 'complete',window物件觸發load事件。
10、從此,以非同步響應方式處理使用者輸入、網路事件等。
JavaScript客戶端儲存
web應用允許使用瀏覽器提供的api實現將資料儲存在使用者的電腦上 客戶端儲存主要使用一下幾種方式 1 web儲存 相容ie在內的大部分瀏覽器 主要包含 localstorage 物件與 sessionstorage 物件,以鍵 值對的形式儲存。物件主要有一下幾個方法 1 getitem key 獲...
JavaScript 客戶端檢測
能力檢測 最常用也最為人們廣泛接受的客戶端檢測形式是能力檢測 又稱特性檢測 能力檢測的目標不是識別特定的瀏覽器,而是識別瀏覽器的能力。採用這種方式不必顧及特定的瀏覽器如何如何,只要確定瀏覽器支援特定的能力,就可以給出解決方案。要理解能力檢測,首先必須要理解兩個重要的概念。第乙個概念就是先檢測達成目的...
清空客戶端快取 javascript
修改後 v1.1版本 新增加了乙個foo.js 同時,也改動了common.js 在common.js 中定義了新的類,並在foo.js 中使用了common.js.在這種情況下如果以前使用者瀏覽過 1.0版本的 html 檔案,那麼他的瀏覽器自動快取了 common.js 當他瀏覽新版本的時候,因...