一個完整的JavaScript實現應該由三個不同部分組成:
1.核心(ECMAScript)
2.文檔對象模型(DOM)
3.瀏覽器對象模型(BOM)
BOM只處理瀏覽器窗口和框架,但習慣上也把所有針對瀏覽器的JavaSCript擴展算作BOM的一部分:
1.彈出新瀏覽器窗口的功能;
2.移動、縮放和關閉瀏覽器窗口的功能;
3.提供瀏覽器詳細信息的navigator對象;
4.提供瀏覽器所加載頁面的詳細信息的location對象;
5.提供用戶顯示器分辨率詳細信息的screen對象;
6.對cookies的支持;
7.像XMLHttpRequest和IE的ActiveXObject這樣的自定義對象。
!在使用<script>嵌入JavaSCript代碼時,不要再代碼中的任何地方出現“</script>”字符串。
<script>定義了6個屬性:
1.async: 可選。表示應該立即下載腳本,但不妨礙頁面中的其他操作,比如下載其他資源或等待加載其他腳本。只對外部腳本文件有效。
<script type="text/javascript" async src="example1.js"></script>
2.charset: 可選。表示通過src屬性指定的代碼的字符集。
3.defer: 可選。表示腳本可以延遲到文檔完全被解析和顯示之後再執行。針對外部腳本文件。
<script type="text/javascript" defer="defer" src="example1.js"></script>
4.language: 已廢棄。
5.src: 可選。表示要執行代碼的外部文件,引入外部文件。
6.type: 表示編寫代碼使用的腳本語言的內容類型(也稱MIME類型)。text/javascript已不推薦使用。
使用javascript的外部文件有以下的優點:
1.可維護性:把所有JavaScript文件放在一個文件夾中便於維護。
2.可緩存:文件只需下載一次。加快頁面加載的速度。
3.適應未來
使用文檔類型(doctype)切換實現文檔模式。混雜模式和標準模式。混雜模式會讓IE的行爲與IE相同,而標準模式讓IE的行爲更接近標準行爲。
如果在文檔開始處沒有發現文檔類型聲明,則所有瀏覽器都會默認開啓混雜模式。
<noscript>元素在瀏覽器不支持腳本和瀏覽器支持腳本但腳本被禁用兩種情況下被顯示。
<script>元素會按照他們在頁面中出現的先後順序依次被解析。在不使用defer和async屬性的情況下,只有在解析完前面的<script>代碼後纔會開始解析後面的。
標識符指變量、函數、屬性的名字,或者函數的參數,標識符的
第一個字符必須是一個字母、下劃線或者一個美元符號;
其他字符可以是字母、下環線、美元符號或數字。
ECMAScript5引入嚴格模式,嚴格模式爲js定義一種不同的解析與執行模型,使ECMAScript3中的一些不確定的行爲得到處理,而且對某些不安全的操作也會拋出錯誤。爲了在腳本中使用嚴格模式,可以在代碼中添加:
"use strict";
這行代碼是一個編譯指示,用於告訴支持的JS引擎切換到嚴格模式。爲了不破環ECMAScript3語法特意選擇這種語法。
語句:ECAMScript中的語句以一個分號結尾;
ECMAScript中的變量是鬆散類型的,就是可以用來保存任何類型的數據。每個變量僅僅是一個用於保存值的佔位符而已。未經初始化的變量會保存一個特殊的值-undefined。
ECMAScript中有5種簡單數據類型:Undefined、Null、Boolean、Number和String。還有複雜數據類型:Object。
可以使用typeof來負責檢測給定變量的數據類型。使用typeof操作符可能會返回:
1."undefined"-如果這個值爲定義;
2."boolean"-如果這個值是布爾值;
3."string"-如果這個值是字符串;
4."number"-如果這個值是數值;
5."object"-如果這個值是對象或者null;
6."function"-如果這個值是函數。
!typeof是一個操作符