通過上圖月帝,我們可以知道躏惋,
number
string
boolean
null
undefined
五個屬于基本數(shù)據(jù)類型
object
屬于復(fù)雜數(shù)據(jù)類型。
Null類型
只有一個值的數(shù)據(jù)類型即null嚷辅,null值表示一個空指針對象簿姨,因此typeof操作符檢測null值時返回“object”。
Undefined類型
Undefined類型只有一個值即undefined。對未初始化的變量執(zhí)行typeof操作符會返回undefined扁位。因此顯示的初始化變量依然是明智的選擇准潭,但不應(yīng)該初始化為undefined。
無論在什么情況下都沒有必要把一個變量的值初始化為undefined域仇,但對于意在保存對象的變量則應(yīng)明確的初始化為null值刑然。這樣做不僅體現(xiàn)null作為空對象指針的慣例,而且也有助于進一步區(qū)分null和undefined暇务。
Boolean類型
Boolean類型有兩個字面值:true和false泼掠。注意:true不一定等于1,false不一定等于0垦细。
Number類型
Number類型包括整數(shù)和浮點數(shù)武鲁。
最小數(shù)值保存在Number.MIN_VALUE中,最大值保存在Number.MAX_VALUE中蝠检。如果某次計算的結(jié)果超出了javascript的數(shù)值范圍則這個數(shù)值將被自動轉(zhuǎn)換成特殊的Infinity值(負數(shù)則轉(zhuǎn)換為-Infinity(負無窮),整數(shù)則轉(zhuǎn)換為Infinity(正無窮))。
正或負的Infinity值無法參與下一次的計算挚瘟。
使用isFinite()函數(shù)可以判斷數(shù)值是否在最小值與最大值之間叹谁。
這里有一個特殊的標識符:NaN(Not a Number)
,任何涉及NaN的操作都會返回NaN乘盖,NaN與任何值都不相等焰檩。
javascript定義了isNaN(),這個函數(shù)會嘗試將這個參數(shù)轉(zhuǎn)換為數(shù)值然后再判斷是否不是數(shù)值订框,注意判斷結(jié)果析苫,不是數(shù)值返回true,是數(shù)值返回false穿扳。
String類型
數(shù)值衩侥、布爾值、對象矛物、字符串值都有toString()方法茫死,但null和undefined值沒有。
在不知道要轉(zhuǎn)換的值是不是null或undefined的情況下履羞,可以使用轉(zhuǎn)型函數(shù)String()峦萎,這個函數(shù)能將任何類型的值轉(zhuǎn)換為字符串。
類型轉(zhuǎn)換
類型轉(zhuǎn)換為String類型
轉(zhuǎn)換成String類型的方式有兩種:
- 調(diào)用toString()方法
- 調(diào)用String()函數(shù)
//boolean類型轉(zhuǎn)string類型
//1.使用toString()方法
var fBool = false;
var tBool = true;
console.log(fBool.toString()); //"false"
console.log(tBool.toString()); //"true"
//2.使用String()函數(shù)
console.log(String(fBool)); //"false"
console.log(String(tBool)); //"true"
//number類型轉(zhuǎn)String類型
var intNum = 123;
var floatNum = 123.45;
//1.使用toString()方法
console.log(intNum.toString()); //"123"
console.log(floatNum.toString()); //"123.45"
//2.使用String()函數(shù)
console.log(String(intNum)); //"123"
console.log(String(floatNum)); //"123.45"
//null類型轉(zhuǎn)String類型
var nullObj = null;
//1.使用toString()方法
//console.log(nullObj.toString()); //這里會報錯:Uncaught TypeError: Cannot read property 'toString' of null
//2.使用String()函數(shù)
console.log(String(nullObj)); //"null"
//undefined類型轉(zhuǎn)String類型
var undefinedVal = undefined;
//1.使用toString()方法
//console.log(undefinedVal.toString()); //這里會報錯: Uncaught TypeError: Cannot read property 'toString' of undefined
//2.使用String()函數(shù)
console.log(String(undefinedVal)); //"undefined"
總結(jié):
null和undefined不能使用toString()方法忆首,但是可以使用String()函數(shù)爱榔;
類型轉(zhuǎn)換為Number類型
//boolean類型轉(zhuǎn)number類型
var tBool = true;
var fBool = false;
//1.通過Number()函數(shù)
console.log(Number(tBool)); //1
console.log(Number(fBool)); //0
//2.通過parseInt()函數(shù)
console.log(parseInt(tBool)); //NaN
console.log(parseInt(fBool)); //NaN
//string類型轉(zhuǎn)number類型
var str1 = "123";
var str2 = "123.45";
var str3 = "10px";
//1.通過Number()函數(shù)
console.log(Number(str1)); //123
console.log(Number(str2)); //123.45
console.log(Number(str3)); //NaN
//2.通過parseInt()函數(shù)
console.log(parseInt(str1)); //123
console.log(parseInt(str2)); //123
console.log(parseInt(str3)); //10
//3.通過parseFloat()函數(shù)
console.log(parseFloat(str1)); //123
console.log(parseFloat(str2)); //123.45
console.log(parseFloat(str3)); //10
//undefined類型轉(zhuǎn)number類型
var undefinedVal = undefined;
//1.通過Number()函數(shù)
console.log(Number(undefinedVal)); //NaN
//2.通過parseInt()函數(shù)
console.log(parseInt(undefinedVal)); //NaN
//null類型轉(zhuǎn)number類型
var nullObj = null;
//1.通過Number()函數(shù)
console.log(Number(nullObj)); //0
//2.通過parseInt()函數(shù)
console.log(parseInt(nullObj)); //NaN
總結(jié):
可以通過三種方式轉(zhuǎn)成數(shù)值類型,Number(),parseInt(),parseFloat()糙及;
boolean類型只能通過Number()進行轉(zhuǎn)換详幽;
string類型,使用Number()的時候丁鹉,如果字符串中包含非數(shù)字的字符妒潭,那么就轉(zhuǎn)換不成功悴能,返回NaN;
注意:空字符串返回的都是0
使用parseInt()的時候,遇到非數(shù)字的字符之后就停止轉(zhuǎn)換為數(shù)字雳灾。所以"10px" 轉(zhuǎn)成 10
漠酿,另外如果第一個字符串就是非數(shù)字的字符,那么返回的是NaN谎亩,如:“abc” 返回 NaN
炒嘲;
使用parseFloat()的時候,當同時存在多個小數(shù)點的時候匈庭,以第一個小數(shù)點為主夫凸;null類型,使用Number()的時候阱持,返回0夭拌,使用parseInt()的時候,返回NaN衷咽;
undefined類型鸽扁,使用Number()的時候,返回NaN镶骗,使用parseInt()的時候桶现,返回NaN;
類型轉(zhuǎn)換為Boolean類型
//number類型轉(zhuǎn)boolean類型
var number1 = 123;
var number2 = -123;
var number3 = 0;
console.log(Boolean(number1)); //true
console.log(Boolean(number2)); //true
console.log(Boolean(number3)); //false
//string類型轉(zhuǎn)boolean類型
var str1 = "";
var str2 = " ";
var str3 = "name";
console.log(Boolean(str1)); //false
console.log(Boolean(str2)); //true
console.log(Boolean(str3)); //true
//null類型轉(zhuǎn)boolean類型
var nullObj = null;
console.log(Boolean(nullObj)); //false
//undefined類型轉(zhuǎn)boolean類型
var undefinedVal = undefined;
console.log(Boolean(undefinedVal)); //false
總結(jié):
- 空字符串返回
false
鼎姊,字符串中都是空返回true
骡和;