
7.22 學(xué)習(xí)JavaScript高級(jí)程序設(shè)計(jì) 筆錄
JavaScript是一種專為網(wǎng)頁(yè)交互設(shè)計(jì)的腳本語(yǔ)言, 有三個(gè)不同的部分組成:? ECMAScript提供核心語(yǔ)言功能、文檔對(duì)象模型DOM、瀏覽器對(duì)象模型BOM
向HTML頁(yè)面中插入JavaScript的主要方法就是使用<script>元素. HTML4.01為其定義了下列6個(gè)屬性
1、async : 表示應(yīng)該立即下載腳本,但不應(yīng)該妨礙頁(yè)面中的其他操作,個(gè)人理解是異步的意思? 瀏覽器解析的時(shí)候不會(huì)阻塞
2、defer:? 表示腳本可以延遲到文檔完全被解析和顯示之后再執(zhí)行. 相當(dāng)于js放在html最底部
3、charset : 表示通過(guò)src屬性指定的代碼的字符集 ,大多數(shù)瀏覽器會(huì)忽略它的值
4、type: 可以看成language的替代品? application/JavaScript? ? text/javascript? 默認(rèn)是text/JavaScript
5、src: 表示包含要執(zhí)行代碼的外部文件
6、language: 已廢棄 原來(lái)用于表示編寫(xiě)代碼使用的腳本語(yǔ)言
??注意:?
1、在script標(biāo)簽內(nèi)不能出現(xiàn)</script>? 瀏覽器會(huì)認(rèn)為這是結(jié)束標(biāo)簽,并產(chǎn)生一個(gè)錯(cuò)誤.可以用轉(zhuǎn)義符? \? ?解決這個(gè)問(wèn)題
2、當(dāng)script的src和嵌入代碼都存在的情況下,會(huì)執(zhí)行外部腳本文件,嵌入的代碼會(huì)被忽略
3、在XHTML文檔中可以省略結(jié)束標(biāo)簽.但是 不能在HTML文檔中使用這種語(yǔ)法. (可以利用棧管理 以判斷標(biāo)簽是否閉合)
4、瀏覽器不會(huì)檢查包含JavaScript的文件的擴(kuò)展名. 所以不寫(xiě) .js不報(bào)錯(cuò). 但是 如果嘗試服務(wù)端語(yǔ)言動(dòng)態(tài)生成JavaScript代碼就需要手動(dòng)聲明MIME類(lèi)型 (application/JavaScript? ? ? ?text/JavaScript? ? 記不記得 手寫(xiě)vite的時(shí)候就用到了)
5、<script> 和 <img>非常相似,src屬性可以指向當(dāng)前html頁(yè)面所在域之外的某個(gè)域中的完整URL (所以可以解決跨域,但是有安全問(wèn)題)
6、async defer 可以做性能優(yōu)化