js中的數(shù)據(jù)類型轉(zhuǎn)換奕扣,一般都是將一種類型的數(shù)據(jù)轉(zhuǎn)換為number卿操,string和boolean這三種基本類型扳肛,包括顯式類型轉(zhuǎn)換和隱式類型轉(zhuǎn)換叔汁。本章介紹基本類型到基本類型的轉(zhuǎn)換统求,對象轉(zhuǎn)換為基本類型的介紹將另開一章。
顯式類型轉(zhuǎn)換
? ? a. 轉(zhuǎn)換為boolean值
????通過Boolean()函數(shù)据块,轉(zhuǎn)換為布爾值码邻,規(guī)則為:除了0,NaN另假,false像屋,undefined,null边篮,‘’ 轉(zhuǎn)為false己莺,其他的所有值都轉(zhuǎn)換為true。
? ? b. 轉(zhuǎn)換為number值
????轉(zhuǎn)換為數(shù)值類型時戈轿,有三種方式:Number()凌受,parseInt(),parseFloat()思杯。其中Number()可以將任意類型轉(zhuǎn)換為數(shù)值類型胜蛉,而另外兩個則是專門將字符串類型轉(zhuǎn)換為數(shù)值。
? ? Number()的轉(zhuǎn)換規(guī)則為:
? ? parseInt()的轉(zhuǎn)換規(guī)則為:
? ? parseFloat的轉(zhuǎn)換規(guī)則為:parseFloat()的轉(zhuǎn)換規(guī)則和parseInt()類似,只是會將第一個小數(shù)點當做有效值誊册,而它會忽略掉前導的零领突。parseFloat同樣會解析各種數(shù)據(jù)格式,但是十六進制始終返回0案怯。
? ? c. 轉(zhuǎn)換為字符串
? ? 轉(zhuǎn)換為字符串有2種方式:toString()方法和String()方法君旦。
? ? 除了null和undefined沒有toString()方法,其他的數(shù)據(jù)類型都有toString()方法殴泰,將數(shù)字類型轉(zhuǎn)換為字符串時于宙,可以傳遞一個參數(shù)作為基數(shù),表示將十進制的數(shù)字轉(zhuǎn)換為該基底的字符串悍汛。
? ? String()方法可以將任意類型的數(shù)據(jù)轉(zhuǎn)換為字符串捞魁,包括undefined和null。
隱式類型轉(zhuǎn)換
? ? 隱式類型轉(zhuǎn)換大致包括如下幾類:
? ? a. isNaN()
? ? isNaN函數(shù)內(nèi)部調(diào)用Number()函數(shù)進行數(shù)字的轉(zhuǎn)換
? ? b. ++离咐,--谱俭,+/-(一元正負運算)
? ? 調(diào)用Number()轉(zhuǎn)換為數(shù)字后再計算
? ? c. +
? ? 加號中如果兩邊有一個為字符串,則轉(zhuǎn)換為字符串宵蛀;如何兩邊為數(shù)字或者布爾值昆著,則進行加法運算,對布爾值术陶,調(diào)用Number()方法轉(zhuǎn)換為數(shù)字凑懂。
? ? d. -,*梧宫,/接谨,%
? ? 調(diào)用Number()轉(zhuǎn)換為數(shù)字后計算
? ? e. &&,||塘匣,脓豪!
? ? 轉(zhuǎn)換為boolean類型
? ? f. >,<忌卤,>=扫夜,<=,==驰徊,!=
? ? 根據(jù)兩邊的類型進行轉(zhuǎn)換笤闯,兩邊有一個為數(shù)字或者布爾值,調(diào)用Number()轉(zhuǎn)換為數(shù)字后進行數(shù)字的比較棍厂;都為為字符串颗味,進行字符串的比較;比較特殊的情況:undefined == null勋桶,(undefined > 0脱衙,undefined < 0,undefined = 0均為false)例驹,NaN == NaN為false