JSON
一种数据格式,也是一种对象。在对象的语法中,属性名引号可加可不加,但在JSON语法中,属性必须加引号
{
"name" : "Tom",
"age" : 10
}
字符串转化为JSON String
-->JSON
JSON.parse()
JSON转化为字符串 JSON
-->String
JSON.stringify()
异步加载
JavaScript异步加载
-
defer
要等到dom文档全部解析完后执行。只有IE可用,也可以把代码写到内部
<script type="text/javascript" src="index.js" defer="defer"></script>
<script type="text/javascript" defer="defer">
console.log("JSON")
</script>
-
async
加载完就执行,只能加载外部脚本,不能把JS写在script
标签里。IE9以上
<script type="text/javascript" src="index.js" async="async"></script>
- 创建
script
,插入DOM;
var script = document.createElement("script");
script.type = "text/javascript";
script.src= "demo.js"
document.head.appendChild(script)
.....
JS时间线
- 创建
Document
对象,并解析web页面。解析HTML元素和他们的文本内容后添加Element
对象和Text
节点到文档中。 - 遇到
link
外部CSS
,创建线程加载,并继续解析文档。 - 遇到
script
外部JS
,并页没有设置async
、defer
,浏览器加载,并阻塞,等待js加载完成后并执行该脚本,然后继续解析文档。 - 遇到script外部JS,并且设置有
async
、defer
,浏览器创建线程加载,并继续解析文档。对于async
属性的脚本,脚本加载完成后继续执行。(异步禁止使用document.write()
) - 遇到img等,先正常解析DOM结构,然后浏览器异步加载
src
,并继续解析文档。 - 当文档解析完成,
document.readyState = "interactive"
; - 文档解析完成后,所有设置有
defer
的脚本会按照顺序执行。(注意与async
的不同,但同样禁止使用document.write()
) -
document
对象触发DOMContentLoaded
事件,这也标志着程序执行从同步脚本执行阶段,转化为事件驱动阶段。 - 当所有
async
的脚本加载完成并执行后,img等加载完成后,document.readyState = "complete"
, window对象触发事件。 - 从此,以异步相应方式处理用户输入、网络事件等。
网友评论