5種簡單數(shù)據(jù)類型: Undefined, Null, Boolean, Number, String
1種復(fù)雜數(shù)據(jù)類型: Object
Undefined
Undefined類型只有一個取值:undefined.
- 變量已經(jīng)聲明但未賦值時,取值
undefined; - 對于未聲明的變量不能使用,但是可以用
typeof操作符判斷類型,返回結(jié)果為undefined;
Null
Null類型只有一個取值:null,表示的意思是空對象指針,可以理解為以后要指向一個對象,但還未確定指向誰.
-
typeofwill returnobject; - 如果一個變量要保存一個對象,最好顯式地賦值為
null;
Boolean
Boolean類型有兩個取值: true and false.
- 要將一個變量轉(zhuǎn)化為Boolean類型,可以使用
Boolean()函數(shù)。
各種數(shù)據(jù)類型轉(zhuǎn)化為Boolean類型的結(jié)果
| 數(shù)據(jù)類型 | 轉(zhuǎn)換為true的值 | 轉(zhuǎn)換為false的值 |
|---|---|---|
| Boolean | true | false |
| String | 任何非空字符串 | 空字符串 |
| Number | 任何非零數(shù)值(包括無窮大) | 0和NaN |
| Object | 任何對象 | null |
| Undefined | 沒有 | undefined |
Number
- 嚴格模式下不可以使用八進制字面量
- 在進行算術(shù)計算時,八進制和十六進制都會被轉(zhuǎn)為十進制
- 最重要的一點,浮點數(shù)是不精確的,所以不要測試浮點數(shù)的特定值
數(shù)值范圍
- 最小值: Number.MIN_VALUE, 具體值為5e-324
- 最大值: Number.MAX-VALUE
NaN
- 任何涉及NaN的操作,都會返回NaN
- NaN與任何值都不相等,包括它本身
數(shù)值轉(zhuǎn)換
主要有三個,Number(), parseInt(), parseFloat().Number()可以把任何類型的數(shù)據(jù)轉(zhuǎn)換為數(shù)值,后兩個專門用于轉(zhuǎn)換字符串.
Number()
- Boolean類型,
true轉(zhuǎn)換為1,false轉(zhuǎn)換為0 - null轉(zhuǎn)換為0
- undefined轉(zhuǎn)換為NaN
- String類型,按如下規(guī)則
- 空字符串 ----> 0
- 只包含數(shù)字,則忽略前導0,轉(zhuǎn)換為十進制數(shù)
- 包含有效的浮點數(shù)格式,以數(shù)字開頭,則忽略前導0,轉(zhuǎn)換為相應(yīng)的浮點數(shù)
- 包含有效的十六進制格式,以“0x”開頭,轉(zhuǎn)換為相應(yīng)的十進制數(shù)
- 其他的均為 NaN
總的來說,就是能轉(zhuǎn)換為數(shù)值,就轉(zhuǎn)換為數(shù)值。
- 如果是對象,先調(diào)用對象的
valueOf(),如果是NaN,則調(diào)用toString(),再轉(zhuǎn)換
注意:一元加操作符的操作與Number()函數(shù)相同.
parseInt()
parseInt()相對來說比較簡單,將一個字符串轉(zhuǎn)換為整數(shù),原則如下:從前往后搜索,第一個不是數(shù)字字符或者負號,直接轉(zhuǎn)換為NaN。只要找到數(shù)字字符,繼續(xù)解析直到遇到非數(shù)字字符。將此間遇到的數(shù)字轉(zhuǎn)換為數(shù)值。前導0會被忽略,所以無法解析八進制數(shù),但可以識別十六進制的數(shù)值.
parseInt()還可以接收第二個參數(shù),來指定轉(zhuǎn)換的進制.
var num = parseInt("0xAF",16); // 175
var num2 = parseInt("AF",16); // 175
parseFloat()
與parseInt()類似,但是解析的第一個字符可以是小數(shù)點.整個字符串中,第一個小數(shù)點是有效的,第二個無效.parseFloat()始終會忽略前導0.
- 只解析十進制數(shù)
- 如果可以解析為整數(shù),則會返回一個整數(shù)
String
- 額外注意的是,字符串包含一些轉(zhuǎn)義字符,如
\b\t\xnn\unnnn - 字符串一旦創(chuàng)建是不可變的,即使另外賦值,也是銷毀原來的字符串,然后以新的字符串填充該變量
轉(zhuǎn)換為字符串
除了Undefined和Null類型,其他類型的數(shù)據(jù)均含有toString()方法.字符串類型的變量會返回一個副本.
- Number類型的數(shù)據(jù)調(diào)用
toString()時,可以傳入一個參數(shù):表示輸出數(shù)值的基數(shù).
var num = 10;
alert(num.toString(2)); // "1010"
- 對于undefined和null,可以使用
String()來轉(zhuǎn)換為字符串 -
String()函數(shù)可以將任何類型的數(shù)據(jù)轉(zhuǎn)換為字符串- 若有
toString()方法,則調(diào)用 - 若參數(shù)是undefined或null,則返回"undefined"或"null"
- 若有
Object
對象就是一組數(shù)據(jù)與功能的集合.創(chuàng)建Object類型的實例并為其添加屬性和方法,就可以創(chuàng)建自定義對象。
var o = new Object();
每個Object對象的實例都有以下方法和屬性
-
constructor: 保存著創(chuàng)建當前對象的函數(shù),如Object() -
hasOwnProperty(propertyName): 檢查給定屬性是否存在于當前實例而非原型中 -
isPrototypeOf(object): 檢查傳入的對象是否是當前對象的原型 -
propertyIsEnumerable(propertyName): 檢查給定屬性是否可以用for-in來枚舉 -
toLocaleString(): 返回對象的基于地區(qū)的字符串 -
toString(): -
valueOf(): 返回對象的字符串、數(shù)值或者布爾值表示,通常與toString()返回的相同
操作符與函數(shù)總結(jié)
-
typeof
返回給定數(shù)據(jù)的數(shù)據(jù)類型
- "undefined" : 該值未定義
- "boolean" : Boolean類型值
- "string" : String類型值
- "number" : Number類型值
- "object" : 對象或者null
- "function" : 如果是函數(shù)
注意:對未定義的數(shù)據(jù)使用typeof,會返回"undefined"
-
isFinite()
判斷一個數(shù)值是否處于數(shù)值的最大值和最小值之間
var result = Number.MAX_VALUE + Number.MAX_VALUE;
alert(isFinite(result)); // false
-
isNaN()
判斷一個數(shù)據(jù)是否是數(shù)值或者可以轉(zhuǎn)換為數(shù)值 -
parseInt()&parseFloat&Number()