js筆記之?dāng)?shù)據(jù)類型

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類型得字面值truefalse區(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ì)第三版》

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容