JSON
一種數(shù)據(jù)格式,也是一種對(duì)象。在對(duì)象的語法中,屬性名引號(hào)可加可不加,但在JSON語法中,屬性必須加引號(hào)
{
"name" : "Tom",
"age" : 10
}
字符串轉(zhuǎn)化為JSON String-->JSON
JSON.parse()
JSON轉(zhuǎn)化為字符串 JSON-->String
JSON.stringify()
異步加載
JavaScript異步加載
-
defer要等到dom文檔全部解析完后執(zhí)行。只有IE可用,也可以把代碼寫到內(nèi)部
<script type="text/javascript" src="index.js" defer="defer"></script>
<script type="text/javascript" defer="defer">
console.log("JSON")
</script>
-
async加載完就執(zhí)行,只能加載外部腳本,不能把JS寫在script標(biāo)簽里。IE9以上
<script type="text/javascript" src="index.js" async="async"></script>
- 創(chuàng)建
script,插入DOM;
var script = document.createElement("script");
script.type = "text/javascript";
script.src= "demo.js"
document.head.appendChild(script)
.....
JS時(shí)間線
- 創(chuàng)建
Document對(duì)象,并解析web頁面。解析HTML元素和他們的文本內(nèi)容后添加Element對(duì)象和Text節(jié)點(diǎn)到文檔中。 - 遇到
link外部CSS,創(chuàng)建線程加載,并繼續(xù)解析文檔。 - 遇到
script外部JS,并頁沒有設(shè)置async、defer,瀏覽器加載,并阻塞,等待js加載完成后并執(zhí)行該腳本,然后繼續(xù)解析文檔。 - 遇到script外部JS,并且設(shè)置有
async、defer,瀏覽器創(chuàng)建線程加載,并繼續(xù)解析文檔。對(duì)于async屬性的腳本,腳本加載完成后繼續(xù)執(zhí)行。(異步禁止使用document.write()) - 遇到img等,先正常解析DOM結(jié)構(gòu),然后瀏覽器異步加載
src,并繼續(xù)解析文檔。 - 當(dāng)文檔解析完成,
document.readyState = "interactive"; - 文檔解析完成后,所有設(shè)置有
defer的腳本會(huì)按照順序執(zhí)行。(注意與async的不同,但同樣禁止使用document.write()) -
document對(duì)象觸發(fā)DOMContentLoaded事件,這也標(biāo)志著程序執(zhí)行從同步腳本執(zhí)行階段,轉(zhuǎn)化為事件驅(qū)動(dòng)階段。 - 當(dāng)所有
async的腳本加載完成并執(zhí)行后,img等加載完成后,document.readyState = "complete", window對(duì)象觸發(fā)事件。 - 從此,以異步相應(yīng)方式處理用戶輸入、網(wǎng)絡(luò)事件等。