Javascript必知必會(huì)(四)js類(lèi)型轉(zhuǎn)換
string和number boolean
javascript 類(lèi)型會(huì)根據(jù)賦值的進(jìn)行轉(zhuǎn)成相應(yīng)的類(lèi)型。
var str = ""; alert(typeof (str));//string str = ; alert(typeof (str));//number var sum = str + ; //+編程兩個(gè)數(shù)字相加 alert(sum);//
這一種比較明顯,一眼就可以計(jì)算出其值。但是請(qǐng)看下面這種轉(zhuǎn)換
var sum = "" + ""; alert(typeof (sum)); //string alert(sum);// var sum = "" + ; alert(typeof (sum)); //string alert(sum);// var sum = + ""; alert(typeof (sum));//string alert(sum); var area = "" * ""; alert(typeof (area)); //number alert(area);// var sub = "" - ""; alert(typeof (sub)); //number alert(sub);// var div = "" / ""; alert(typeof (div));//number alert(div);//.
number 類(lèi)型如果和string 類(lèi)型"+", 將會(huì)直接number轉(zhuǎn)成string
上述中“+” 比較特殊,如果是- 、* 、/ 呢;那么最終會(huì)轉(zhuǎn)成什么類(lèi)型呢。
var area = "" * "a"; alert(typeof (area));//number alert(area);//NaN var sub = "a" - ""; alert(typeof (sub));//number alert(sub);//NaN sub = "a" - ; alert(typeof (sub));//number alert(sub);//NaN var div = "" / "a"; alert(typeof (div));//number alert(div);//NaN div = "a" / ; alert(typeof (div));//number alert(div);//NaN
如上 - 、*、/ 是number 中算術(shù)具有的。string和number是不能進(jìn)行運(yùn)算的,所以其值都是NaN。類(lèi)型number。
var a = true; alert(typeof(a));//boolean var b = "true"; var ab = a + b; alert(typeof (ab));//string alert(ab); //truetrue alert(a == b);//false
boolean 和 string ,boolean類(lèi)型自動(dòng)轉(zhuǎn)成了字符串“true”,但是為什么a不等于b呢
大家看下這個(gè)例子:
var c = ""; alert(typeof(c));//string var d = ; alert(typeof (d));//number alert(c == d);//true
這里給出了轉(zhuǎn)換的原則:(供參考)
1. 如果有一個(gè)操作數(shù)是布爾值,則在比較相等之前將其轉(zhuǎn)換為數(shù)值————false轉(zhuǎn)換為0,true轉(zhuǎn)換為1;
2. 如果一個(gè)操作數(shù)是字符串,另一個(gè)操作符是數(shù)值,則在比較相等之前先講字符串轉(zhuǎn)換為數(shù)值;
3. 如果一個(gè)操作數(shù)是對(duì)象,另一個(gè)操作數(shù)不是,則調(diào)用對(duì)象的valueOf()方法,用得到的基本類(lèi)型值按照前面的規(guī)則進(jìn)行比較。
那么在比較字符串和布爾類(lèi)型是就會(huì):
發(fā)生這樣的轉(zhuǎn)換: Boolean true先轉(zhuǎn)成number 1,在轉(zhuǎn)成字符串“1” ,在進(jìn)行比較。結(jié)果肯定是 false 了。
null 和string number Boolean undefined
var a = null;
alert(typeof (a));//object
var b = "hello";
var ab = a + b;
alert(typeof (ab));//string
alert(ab); //nullhello
var c = ;
var ac = a * c;
alert(typeof (ac)); //number
alert(ac);//
if (a ) //false
{
} else
{
alert("false");
}
var u;
alert(a == u); //true
從給出的例子可以看出:
null 在 string中 自動(dòng)轉(zhuǎn)成字符串"null" , 在number中表示數(shù)字 0,在邏輯判斷中相當(dāng)于false,在值表示時(shí) 和undefined 一樣。注意是== 而不是===。
雖然javascript 在進(jìn)行比較時(shí),== 轉(zhuǎn)換了其比較類(lèi)型,但是其變量類(lèi)型并沒(méi)有因?yàn)?= 而發(fā)生改變。
- Javascript 強(qiáng)制類(lèi)型轉(zhuǎn)換函數(shù)
- js 變量類(lèi)型轉(zhuǎn)換常用函數(shù)與代碼[比較全]
- Javascript 類(lèi)型轉(zhuǎn)換方法
- Javascript將string類(lèi)型轉(zhuǎn)換int類(lèi)型
- js 數(shù)據(jù)類(lèi)型轉(zhuǎn)換總結(jié)筆記
- js中更短的 Array 類(lèi)型轉(zhuǎn)換
- Javascript Boolean、Nnumber、String 強(qiáng)制類(lèi)型轉(zhuǎn)換的區(qū)別詳細(xì)介紹
- asp與js的類(lèi)型轉(zhuǎn)換函數(shù)介紹
相關(guān)文章
Bootstrap入門(mén)書(shū)籍之(五)導(dǎo)航條、分頁(yè)導(dǎo)航
這篇文章主要介紹了Bootstrap入門(mén)書(shū)籍之(五)導(dǎo)航條、分頁(yè)導(dǎo)航的相關(guān)資料,需要的朋友可以參考下2016-02-02
A標(biāo)簽中通過(guò)href和onclick傳遞的this對(duì)象實(shí)現(xiàn)思路
想傳遞當(dāng)前對(duì)象給一個(gè)函數(shù),于是就將這個(gè)URL寫(xiě)成"Javascript:shoControlSidebar(this)",可是結(jié)果發(fā)現(xiàn)這并不可行,接下來(lái)為大家詳細(xì)介紹下解決方法2013-04-04
mock.js實(shí)現(xiàn)模擬生成假數(shù)據(jù)功能示例
這篇文章主要介紹了mock.js實(shí)現(xiàn)模擬生成假數(shù)據(jù)功能,結(jié)合實(shí)例形式分析了mock.js插件生成模擬數(shù)據(jù)的相關(guān)操作技巧,需要的朋友可以參考下2019-01-01
關(guān)于 byval 與 byref 的區(qū)別分析總結(jié)
關(guān)于 byval 與 byref 的區(qū)別分析總結(jié)...2007-10-10
js解析xml字符串和xml文檔實(shí)現(xiàn)原理及代碼(針對(duì)ie與火狐)
分別針對(duì)ie和火狐分別作了對(duì)xml文檔和xml字符串的解析,考慮到了瀏覽器的兼容性,至于在ajax環(huán)境下解析xml,其實(shí)原理是一樣的,只不過(guò)放在了ajax里,還是要對(duì)返回的xml進(jìn)行解析,感興趣的朋友可以了解下,或許對(duì)你學(xué)習(xí)js解析xml有所幫助2013-02-02
js實(shí)現(xiàn)ASP分頁(yè)函數(shù) HTML分頁(yè)函數(shù)
js實(shí)現(xiàn)ASP分頁(yè)函數(shù) HTML分頁(yè)函數(shù)...2006-09-09
javascript instanceof 內(nèi)部機(jī)制探析
在 JavaScript 中,可以用 instanceof 來(lái)判斷一個(gè)對(duì)象是不是某個(gè)類(lèi)或其子類(lèi)的實(shí)例。2010-10-10

