null
調(diào)用typeof null會(huì)返回"object",因?yàn)樘厥庵?code>null被認(rèn)為是一個(gè)空的對象引用
undefined
?? 實(shí)際上,undefined值是派生自null值得,所以null == undefined,盡管 null 和 undefined 有這樣的關(guān)系,但它們的用途完全不同。
?? 如前所述,無論在什么情況下都沒有必要把一個(gè)變量的值顯式地設(shè)置為 undefined,可是同樣的規(guī)則對 null 卻不適用。
??換句話說,只要意在保存對象的變量還沒有真正保存對象,就應(yīng)該明確地讓該變量保存 null 值.
Boolean
Boolean類型得字面值
true和false區(qū)分大小寫,True和False只是標(biāo)識符。
要將一個(gè)值轉(zhuǎn)換成其對應(yīng)得Boolean值,可以調(diào)用轉(zhuǎn)型函數(shù)Boolean()
| 數(shù)據(jù)類型 | 轉(zhuǎn)換為true值 | 轉(zhuǎn)換為false值 |
|---|---|---|
| Boolean | true | false |
| String | 任何非空字符串 | ""(空字符串) |
| Number | 任何非零數(shù)字值(包括無窮大) | 0和NaN |
| Object | 任何對象 | null |
| Undefined | n/a | undefined |
- 這些轉(zhuǎn)換規(guī)則對理解流控制語句(如 if 語句)自動(dòng)執(zhí)行相應(yīng)的 Boolean 轉(zhuǎn)換非常重要,請看下面的代碼:
var message = "Hello world!";
var messageAsBoolean = Boolean(message);
#OR
var message = "Hello world!";
if (message){
alert("Value is true");
}
數(shù)值轉(zhuǎn)換
有 3 個(gè)函數(shù)可以把非數(shù)值轉(zhuǎn)換為數(shù)值:
Number()、parseInt()和parseFloat()。第一個(gè)函數(shù),即轉(zhuǎn)型函數(shù) Number()可以用于任何數(shù)據(jù)類型,而另兩個(gè)函數(shù)則專門用于把字符串轉(zhuǎn)換成數(shù)值。Number() 函數(shù)的轉(zhuǎn)換規(guī)則如下:
1.如果是 Boolean 值, true 和 false 將分別被轉(zhuǎn)換為 1 和 0。
2.如果是數(shù)字值,只是簡單的傳入和返回。
3.如果是 null 值,返回 0。
4.如果是 undefined,返回 NaN。
5.如果是對象,則調(diào)用對象的 valueOf()方法,然后依照前面的規(guī)則轉(zhuǎn)換返回的值。如果轉(zhuǎn)換的結(jié)果是 NaN,則調(diào)用對象的 toString()方法,然后再次依照前面的規(guī)則轉(zhuǎn)換返回的字符串值。
6.如果是字符串,遵循下列規(guī)則:
?如果字符串中只包含數(shù)字(包括前面帶正號或負(fù)號的情況),則將其轉(zhuǎn)換為十進(jìn)制數(shù)值,即"1"會(huì)變成 1, "123"會(huì)變成 123,而"011"會(huì)變成 11(注意:前導(dǎo)的零被忽略了);
? 如果字符串中包含有效的浮點(diǎn)格式,如"1.1",則將其轉(zhuǎn)換為對應(yīng)的浮點(diǎn)數(shù)值(同樣,也會(huì)忽略前導(dǎo)零);
? 如果字符串中包含有效的十六進(jìn)制格式,例如"0xf",則將其轉(zhuǎn)換為相同大小的十進(jìn)制整數(shù)值;
? 如果字符串是空的(不包含任何字符),則將其轉(zhuǎn)換為 0;
? 如果字符串中包含除上述格式之外的字符,則將其轉(zhuǎn)換為 NaN。
var num1 = Number("Hello world!"); //NaN
var num2 = Number(""); //0
var num3 = Number("000011"); //11
var num4 = Number(true); //1
- parserInt()函數(shù)
1.它會(huì)忽略字符串前面的空格,直至找到第一個(gè)非空格字符。如果第一個(gè)字符不是數(shù)字字符或者負(fù)號, parseInt()就會(huì)返回 NaN;也就是說,用 parseInt()轉(zhuǎn)換空字符串會(huì)返回 NaN( Number()對空字符返回 0)
2.如果第一個(gè)字符是數(shù)字字符, parseInt()會(huì)繼續(xù)解析第二個(gè)字符,直到解析完所有后續(xù)字符或者遇到了一個(gè)非數(shù)字字符。
3.例如, "1234blue"會(huì)被轉(zhuǎn)換為 1234,因?yàn)?blue"會(huì)被完全忽略。類似地, "22.5"會(huì)被轉(zhuǎn)換為 22,因?yàn)樾?shù)點(diǎn)并不是有效的數(shù)字字符。
多數(shù)情況下,我們要解析的都是十進(jìn)制數(shù)值,因此始終將 10 作為第二個(gè)參數(shù)是
非常必要的。
var num1 = parseInt("1234blue"); // 1234
var num2 = parseInt(""); // NaN
var num3 = parseInt("0xA"); // 10(十六進(jìn)制數(shù))
var num4 = parseInt(22.5); // 22
var num5 = parseInt("070"); // 56(八進(jìn)制數(shù))
var num6 = parseInt("70"); // 70(十進(jìn)制數(shù))
var num7 = parseInt("0xf"); // 15(十六進(jìn)制數(shù))
var num1 = parseInt("10", 2); //2 (按二進(jìn)制解析)
var num2 = parseInt("10", 8); //8 (按八進(jìn)制解析)
var num3 = parseInt("10", 10); //10 (按十進(jìn)制解析)
var num4 = parseInt("10", 16); //16 (按十六進(jìn)制解析
- parserFloat()函數(shù)
1.與 parseInt()函數(shù)類似, parseFloat()也是從第一個(gè)字符(位置 0)開始解析每個(gè)字符。而且也是一直解析到字符串末尾,或者解析到遇見一個(gè)無效的浮點(diǎn)數(shù)字字符為止。
2.也就是說,字符串中的第一個(gè)小數(shù)點(diǎn)是有效的,而第二個(gè)小數(shù)點(diǎn)就是無效的了,因此它后面的字符串將被忽略。舉例來說,"22.34.5"將會(huì)被轉(zhuǎn)換為 22.34。
var num1 = parseFloat("1234blue"); //1234 (整數(shù))
var num2 = parseFloat("0xA"); //0
var num3 = parseFloat("22.5"); //22.5
var num4 = parseFloat("22.34.5"); //22.34
var num5 = parseFloat("0908.5"); //908.5
var num6 = parseFloat("3.125e7"); //31250000
String
- toString()方法
1.該方法可放入一個(gè)參數(shù),默認(rèn)情況下, toString()方法以十進(jìn)制格式返回?cái)?shù)值的字符串表示。
2.而通過傳遞基數(shù), toString()可以輸出以二進(jìn)制、八進(jìn)制、十六進(jìn)制,乃至其他任意有效進(jìn)制格式表示的字符串值
數(shù)值、布爾值、對象和字符串值都有 toString()方法。但 null 和 undefined 值沒有這個(gè)方法。
var num = 10;
alert(num.toString()); // "10"
alert(num.toString(2)); // "1010"
alert(num.toString(8)); // "12"
alert(num.toString(10)); // "10"
alert(num.toString(16)); // "a"
- String()方法
在不知道要轉(zhuǎn)換的值是不是 null 或 undefined 的情況下,還可以使用轉(zhuǎn)型函數(shù) String(),這個(gè)函數(shù)能夠?qū)⑷魏晤愋偷闹缔D(zhuǎn)換為字符串。
? 如果值有 toString()方法,則調(diào)用該方法(沒有參數(shù))并返回相應(yīng)的結(jié)果;
? 如果值是 null,則返回"null";
? 如果值是 undefined,則返回"undefined"。
參考資料:
《javaScript高級程序設(shè)計(jì)第三版》