JavaScript組成部分
- ECMAScript
- 文法
- 類型
- 語句
- 關鍵字
- 保留字
- 操作符
- 對象
- DOM
提供通路和操作網頁内容的方法和接口
- DOM1級
主要是映射文檔的結構
- DOM核心
- DOM HTML
- DOM2級
在原來DOM的基礎上又擴充了滑鼠和使用者界面事件、範圍、周遊(疊代DOM文檔的方法)等細分子產品,通過對象接口增加了對CSS的支援
- DOM視圖(DOM Views):定義了跟蹤不同文檔視圖的接口
- DOM事件(DOM Events):定義了事件和事件處理的接口
- DOM樣式(DOM Style):定義了基于CSS為元素應用樣式的接口
- DOM周遊和範圍(DOM Traversal and Range):定義了周遊和操作文檔樹的接口
- DOM3級
進一步擴充了DOM,引入了以統一方式加載和儲存文檔的方法;新增了驗證文檔的方法
- DOM1級
- BOM
提供與浏覽器互動的方法和接口
資料類型
簡單資料類型:Undefined、Null、Boolean、Number、String
複雜資料類型:Object
- Array
- Function
- Date
- RegExp
- …
typeof操作符
Undefined
表示初始化但未聲明的變量,一般不顯式指派,多用于比較
NULL
表示一個空指針對象 ,多以typeof會顯示"object",實際上Undefined是派生自NULL,是以
的傳回值是null == undefined
true
Boolean
和true
區分大小寫,false
和True
不是False
值,隻是辨別符Boolean
轉化Boolean值 :
函數boolean();
資料類型 轉換為true的值 轉換為false的值 Boolean true false String 任何非空字元串 “”(空字元串) Number 任何非零數字值(包括無窮大) 0和NaN Object 任何對象 Undefined undefined Number
使用IEEE754格式來表示整數和浮點
- 整型
- 十進制
var num = 10;
- 八進制
var num = 070;
- 十六進制
var num = 0x5f;
在進行算術計算時,所有的八進制和十六進制都被轉化為十進制
- 十進制
- 浮點型
浮點數最高精度為17位
0.1 + 0.2 = 0.30000000000000004
-
數值範圍
最大值:
最小值:Number.MIN_VALUE
Number.MAX_VALUE
超出數值範圍的數會被自動轉換成為特殊的
值,Infinity
表示正無窮,Infinity
表示負無窮,-Infinity
值無法參加運算,可以用Infinity
函數判斷數值是否是有窮的。isFinite();
- NaN
表示一個本來要傳回數值的操作數未傳回數值的情況。
- 特點
- 任何涉及NaN的操作都會傳回NaN,除以0的操作也傳回NaN
實際上隻有NaN / NaN才傳回NaN,整數除以NaN傳回Infinity,負數除以NaN傳回-Infinity
- NaN與任何值都不相等,包括他本身
- 任何涉及NaN的操作都會傳回NaN,除以0的操作也傳回NaN
- 判定:
函數isNaN();
-
isNaN( NaN ) == true
-
isNaN( 10 ) == false
-
isNaN( "10" ) == false
-
isNaN( "blue" ) == true
-
isNaN( true ) == false
-
- 特點
- 數值轉換
- Number();
- 如果是布爾值,true和false将分别轉為1和0.
- 如果是數字值,隻是簡單地傳入和傳回。
- 如果是NULL值,傳回0.
- 如果是undefined,傳回NaN
- 如果是字元串:
- 如果字元串隻包含數字,則将其轉化為十進制數值
- 如果字元串中包含有效的浮點格式,則将其轉化為對應的浮點數值
- 如果字元串中包含有效的十六進制格式,則轉化為相同大小的十進制形式
- 如果字元是空的,則将其轉化為0
- 如果字元串包含上述格式之外的字元,則将其轉化為NaN
- 如果是對象,則調用valueOf()方法,然後依照前面的規則傳回值。如果轉換得是NaN,則調用toString();方法。
- parseInt();
忽略字元串前面的空格,直到找到第一個非空字元,如果第一個字元不是數字字元或者符号,則傳回NaN。否則會直接解析完最後一個數字字元
- parsefloat();
與parseInt();類似
- Number();
String
- 特點
ECMAScript中的字元串是不可變的,要改變,隻能先銷毀再指派,也就是覆寫。
- 轉換字元串
-
方法toString();
和
參數:null,2,8,10,16
沒有這個方法undefined
改變進制
-
方法String();
-
Object
ECMAScript中的對象其實就是一組資料和功能的集合。
- 建立對象
-
var obj = new Object();
-
var obj = { ... };
-
- Object屬性和方法
-
:儲存着用于建立目前對象的函數constructor
-
:用于檢查給定的屬性在目前的對象執行個體中是否存在hasOwnProperty( propertyName )
-
:用于檢查傳入的對象是否是傳入對象的原型isPropertypeOf( object )
-
:用于檢查給定的屬性是否能夠使用for-in語句來枚舉propertyIsEnumerable( propertyName )
-
:傳回對象的字元串表示,該字元串與執行環境的地區對應toLocaleString()
-
:傳回對象的字元串表示toString()
-
:傳回對象的字元串數值或布爾值表示,通常與valueOf()
方法傳回的值相同toString()
-
語句
- for-in語句
- 疊代語句,循環顯示BOM中對象的所有屬性(無序的)
如果對象中屬性值為null或者undefined,則會終止循環
- 疊代語句,循環顯示BOM中對象的所有屬性(無序的)
- with語句
- 将代碼的作用域設定到一個特定的對象中(嚴格模式不支援)
函數
參數:函數可以傳入多個參數,而且不需要定義形參接受,他們會被存入僞數組arguments中。
重載:js函數沒有重載,隻能覆寫。
- 整型