Author:Nicholas C.Zakas
Translator:李松峰 曹力
JavaScript的實現(xiàn)由三部分組成:
1.核心(ECMAScript)
2.文檔對象模型(DOM)
3.瀏覽器對象模型(BOM)
-
ECMAScript
由ECMA-262定義的ECMAScript與Web瀏覽器沒有依賴關系。
這門語言本身并不包含輸入和輸出定義
它規(guī)定了這門語言的下列組成部分:
- 語法
- 類型
- 語句
- 關鍵字
- 保留字
- 操作符
- 對象
由ECMA-262定義诸老,提供核心語言功能
-
DOM(文檔對象模型)
是針對XML 但經(jīng)過擴展用于HTML 的應用程序編程接口枕赵。
DOM把整個頁面映射為一個多層節(jié)點結構牙寞。
DOM2級引入了下列新模塊,也給出了眾多新類型和新接口的定義:
1.DOM視圖(DOM Views):定義了跟蹤不同文檔(例如:應用CSS之前和之后的文檔)視圖的接口
2.DOM事件(DOM Events):定義了事件和事件處理的接口
3.DOM樣式(DOM Style):定義了基于CSS為元素應用樣式的接口
4.DOM遍歷和范圍(DOM Traversal and Range):定義了遍歷和操作文檔樹的接口
提供訪問和操作網(wǎng)頁內容的方法和接口
-
BOM(瀏覽器對象模型)
支持可以訪問和瀏覽器窗口的瀏覽器對象模型
提供與瀏覽器交互的方法和接口
<script> 屬性:
- async:可選旁涤。表示應該立即下載腳本鳖目,但不應妨礙頁面中的其他操作,比如下載其他資源或等待加載其他腳本沉桌。只對外部腳本文件有效。
{指定async屬性的目的是不讓頁面等待兩個腳本文件之前執(zhí)行算吩,因此留凭,確保兩者之間互不依賴,為此偎巢,建議異步腳本不要在加載期間修改DOM} - charset:可選蔼夜。表示通過src屬性指定的代碼的字符集。由于大多數(shù)瀏覽器會忽略它的值压昼,因此這個屬性很少有人用求冷。
- defer:可選。表示腳本可以延遲到文檔完全被解析和顯示之后再執(zhí)行窍霞。只對外部腳本文件有效匠题。IE7及更早版本對嵌入腳本也支持這屬性。
- language:已廢棄
- src:可選但金。表示包含要執(zhí)行代碼的外部文件韭山。
- type:可選“列澹可以看成是language的替代屬性掠哥;表示編寫代碼使用的腳本語言的內容類型(MIME類型)
可擴展超文本標記語言(XMTML),是將HTML作為XML的應用而重新定義的一個標準
JavaScript 在XHMTML中的用法 加CData片段
嵌入代碼與外部文件 比較
外部文件優(yōu)點:1.可維護性 2.可緩存 3.適應未來
<noscript>
該元素只會在下列(1.瀏覽器不支持腳本2.瀏覽器支持腳本,但腳本被禁用)的情況下顯示出來
</noscript>
ECMAScript 中的一切都區(qū)分大小寫秃诵。
標識符:變量,函數(shù)塞琼,屬性的名字菠净,或者函數(shù)的參數(shù)。
ECMAScript標識符采用駝峰大小寫格式。 .eg. myCar毅往,doSomethingImportant
嚴格模式
"use strict" ————它是一個編譯指示牵咙,用于告訴支持的JavaScript引擎切換到嚴格模式,也可以在函數(shù)內部使用
支持嚴格模式的瀏覽器:IE10+攀唯,F(xiàn)irefox4+洁桌,Safari5.1+,Opera12+侯嘀,Chrome
給未經(jīng)聲明的變量賦值在嚴格模式下會導致拋出Reference Error 錯誤
在嚴格模式下另凌,不能定義名為eval 或arguments的變量,否則會導致語法錯誤戒幔。
數(shù)據(jù)類型
5種 基本數(shù)據(jù)類型:Undefined吠谢、Null、Boolean诗茎、Number工坊、String
1種 復雜數(shù)據(jù)類型:Object (本質上是由一組無序的名值對 組成)
- typeof 操作符
注:有些時候,typeof 操作符會返回一些令人迷惑但技術上卻正確的值敢订。比如王污,調用typeof null 會返回"object",因為特殊值null被認為是一個空的對象引用楚午。
Safari 5-昭齐,Chrome7-在對正則表達式調用typeof操作符時會返回"funcition",而其他瀏覽器在這種情況下會返回"object"
- Undefined————在使用var 聲明變量但未對其加以初始化
- Null————表示一個空對象指針
- Boolean————兩個字面值:true 和 false
- Number————使用IEEE754格式來表示整點和浮點數(shù)值
- String————用于表示由零或多個16位Unicode字符組成的字符序列,即字符串
- Object————一組數(shù)據(jù)和功能的集合 醒叁,即對象
ps:n/a(not applicable ) 不適用
e表示法(科學計數(shù)法)
var floatNum=3.125e7; //等于31250000