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对象触发事件。 - 从此,以异步相应方式处理用户输入、网络事件等。