Javascript - 五個基本數(shù)據(jù)類型以及類型轉(zhuǎn)換

數(shù)據(jù)類型.png

通過上圖月帝,我們可以知道躏惋,

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骡和;
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市相寇,隨后出現(xiàn)的幾起案子慰于,更是在濱河造成了極大的恐慌,老刑警劉巖裆赵,帶你破解...
    沈念sama閱讀 217,542評論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件东囚,死亡現(xiàn)場離奇詭異,居然都是意外死亡战授,警方通過查閱死者的電腦和手機页藻,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,822評論 3 394
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來植兰,“玉大人份帐,你說我怎么就攤上這事¢沟迹” “怎么了废境?”我有些...
    開封第一講書人閱讀 163,912評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我噩凹,道長巴元,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,449評論 1 293
  • 正文 為了忘掉前任驮宴,我火速辦了婚禮逮刨,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘堵泽。我一直安慰自己修己,他們只是感情好,可當我...
    茶點故事閱讀 67,500評論 6 392
  • 文/花漫 我一把揭開白布迎罗。 她就那樣靜靜地躺著睬愤,像睡著了一般。 火紅的嫁衣襯著肌膚如雪纹安。 梳的紋絲不亂的頭發(fā)上尤辱,一...
    開封第一講書人閱讀 51,370評論 1 302
  • 那天,我揣著相機與錄音厢岂,去河邊找鬼啥刻。 笑死,一個胖子當著我的面吹牛咪笑,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播娄涩,決...
    沈念sama閱讀 40,193評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼窗怒,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了蓄拣?” 一聲冷哼從身側(cè)響起扬虚,我...
    開封第一講書人閱讀 39,074評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎球恤,沒想到半個月后辜昵,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,505評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡咽斧,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,722評論 3 335
  • 正文 我和宋清朗相戀三年堪置,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片张惹。...
    茶點故事閱讀 39,841評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡舀锨,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出宛逗,到底是詐尸還是另有隱情坎匿,我是刑警寧澤,帶...
    沈念sama閱讀 35,569評論 5 345
  • 正文 年R本政府宣布,位于F島的核電站替蔬,受9級特大地震影響告私,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜承桥,卻給世界環(huán)境...
    茶點故事閱讀 41,168評論 3 328
  • 文/蒙蒙 一驻粟、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧快毛,春花似錦格嗅、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,783評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至襟衰,卻和暖如春贴铜,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背瀑晒。 一陣腳步聲響...
    開封第一講書人閱讀 32,918評論 1 269
  • 我被黑心中介騙來泰國打工绍坝, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人苔悦。 一個月前我還...
    沈念sama閱讀 47,962評論 2 370
  • 正文 我出身青樓轩褐,卻偏偏與公主長得像,于是被迫代替她去往敵國和親玖详。 傳聞我的和親對象是個殘疾皇子把介,可洞房花燭夜當晚...
    茶點故事閱讀 44,781評論 2 354

推薦閱讀更多精彩內(nèi)容