第1章 JavaScript 簡介
1.1 JavaScript 組成:
核心(ECMAScript) + 文檔對象模型(DOM) + 瀏覽器對象模型(BOM)

1.1.1 ECMAScript
ECMAScript 規(guī)定了以下內(nèi)容:
語法、類型、語句、關鍵字、保留字、操作符、對象。
ECMAScript 就是對實現(xiàn)該標準規(guī)定的各個方面內(nèi)容的語言描述。
1.1.2 文檔對象模型(DOM)
DOM——針對XML 但將擴展用于HTML的應用程序編程接口(API)。
DOM把整個頁面映射為一個多層節(jié)點結構,頁面中的每個組成部分都是某種類型的節(jié)點,這些節(jié)點又包含著不同類型的數(shù)據(jù)。
借助 DOM 提供的 API,可以輕松自如地刪除、添加、替換、修改任何節(jié)點。
1.1.3 瀏覽器對象模型(BOM)
BOM —— 可以訪問和操作瀏覽器對象模型。
根本上講,BOM 只處理瀏覽器窗口和框架,但習慣上把所有針對瀏覽器的 JavaScript 擴展都算作 BOM 的一部分。如:
彈出新瀏覽器窗口;
移動、縮放和關閉瀏覽器窗口的功能;
提供瀏覽器詳細信息的 navigator 對象;
提供瀏覽器所加載頁面的詳細信息的 location 對象;
提供用戶顯示器分辨率詳細信息的 screen 對象;
對 cookies 的支持;
像 XMLHttlRequest 和 IE 的 ActiveXObject 這樣的自定義對象。
第2章 在 HTML 中使用 JavaScript
2.1 <script>元素
src 屬性:可選,當加載外部 js 文件時,此屬性必需;可以指向當前頁面所在域之外的某個域中的完整 URL 。
type 屬性:可選,寫代碼使用的腳本語言的內(nèi)容類型,默認 text/javascript。
async 屬性: 可選,立即下載腳本,但不應妨礙頁面中的其他操作,如下載其他資源或等待加載其他腳本。只對外部腳本文件有效。
defer 屬性:可選。立即下載,延遲執(zhí)行。表示腳本可以延遲到文檔完全被解析和顯示之后再執(zhí)行。只對外部文件有效。defer='defer'。
無論如何包含代碼,只要不存在 defer 和 async 屬性,瀏覽器都會按照<script>元素在頁面中出現(xiàn)的先后順序對他們依次進行解析。
2.1.1 標簽的位置
按傳統(tǒng)做法,所有 <script> 元素都應該放在 <head> 元素中,但由于 <script> 元素順序加載,為防止瀏覽器在呈現(xiàn)頁面時出現(xiàn)延遲,一般將 JavaScript 引用放在 <body> 元素中頁面內(nèi)容的后面。視覺上,瀏覽器窗口顯示空白頁面的時間縮短,而感覺打開頁面的速度加快。
2.2 嵌入代碼與外部文件
建議使用外部文件來包含 JavaScript 代碼,優(yōu)點如下:
可維護性好;可緩存;適應未來。
2.3 文檔模式
文檔模式是通過使用文檔類型(doctype)切換實現(xiàn)的。
混雜模式——IE 會按IE5.5 來渲染。不同瀏覽器在此模式下,行為差異非常大。若不適用 hack 技術,跨瀏覽器的行為根本無一致性可言。
標準模式——按標準進行渲染。
2.4 <noscript>元素
所有瀏覽器都支持 <noscript>元素,包含<noscript>元素的只有下列情況下才會顯示出來:
瀏覽器不支持腳本或瀏覽器支持腳本但腳本被禁用。