淺談javascript中的數(shù)據(jù)類型轉(zhuǎn)換
1、把其他的數(shù)據(jù)類型轉(zhuǎn)換為number類型
Number()->嚴(yán)格
parseFloat/parseInt ->非嚴(yán)格
isNaN(value) 如果value值不是數(shù)字類型的,它是首先調(diào)用Number轉(zhuǎn)換為數(shù)字類型然后在判斷是否為有效的數(shù)字
例如:
Number("12px"); ->NaN
parseInt("12px"); ->12
isNaN("12"); ->false
規(guī)律:
1)把布爾類型轉(zhuǎn)換為數(shù)字的話 true->1 false->0
2)把null/undefined轉(zhuǎn)換為數(shù)字 null->0 undefined->NaN 10+null=10 10+undefined=NaN
3)把[]轉(zhuǎn)換為數(shù)字 首先調(diào)用數(shù)組的toString方法把[]->"",然后在使用Number方法把""->0
2、把其他的數(shù)據(jù)類型轉(zhuǎn)換為布爾類型
Boolean
!!
! 先轉(zhuǎn)換為布爾類型,然后在取反
例如:
!!1->true
!!0->false
![]->false !![]->true
規(guī)律:
只有0、NaN、null、undefined、""這五個(gè)轉(zhuǎn)換為布爾類型的時(shí)候是false,其余的轉(zhuǎn)換完成都是true
特殊情況:
如果你的條件判斷中只是單獨(dú)的一個(gè)值,它是首先把1轉(zhuǎn)換布爾類型(->true),在判斷是真還是假,如果是真條件成立,反之條件不成立
if (1) { } if ("3px" * 3) {//->條件不成立 "3px" * 3=NaN ->false } if ("3px" + 3) {//->條件成立 "3px" + 3="3px3" ->true }
"+"在JS中不僅僅是數(shù)學(xué)運(yùn)算,遇到字符串的時(shí)候?qū)儆谧址唇?/p>
"-、*、/"在JS中只能是數(shù)學(xué)運(yùn)算,遇到不是number類型的要強(qiáng)制轉(zhuǎn)換為number進(jìn)行數(shù)學(xué)性運(yùn)算
3、兩個(gè)值進(jìn)行比較(==比較的,===比較數(shù)據(jù)類型不一樣不會(huì)進(jìn)行默認(rèn)的轉(zhuǎn)換),如果左右兩邊的數(shù)據(jù)類型不一樣,我們需要遵循一套法則,進(jìn)行默認(rèn)的數(shù)據(jù)類型轉(zhuǎn)換
value1==value2
1)對(duì)象==對(duì)象 比較的是自己存儲(chǔ)的內(nèi)存地址,如果內(nèi)存地址不一樣就不相等 []==[]->false 每一個(gè)空數(shù)組都是一個(gè)單獨(dú)的內(nèi)存地址
2)對(duì)象==字符串 調(diào)用toString方法,將對(duì)象轉(zhuǎn)換為字符串 []==""->true
3)對(duì)象==布爾 對(duì)象轉(zhuǎn)換為數(shù)字(toString-Number),布爾也轉(zhuǎn)換為數(shù)字(true->1 false->0)
[]==false ->true []->0 false->0 0==0->true
![]==false -> ![]先把空數(shù)組轉(zhuǎn)換為布爾類型然后在取反->false false==false->true
4)對(duì)象==數(shù)字 對(duì)象轉(zhuǎn)換為數(shù)字 []==0->true []==1->false
5)字符串==布爾 兩者都轉(zhuǎn)換為數(shù)字 "3"==true->false "1"==true->true
6)字符串==數(shù)字 字符串轉(zhuǎn)換為數(shù)字 ""==0->true
7)布爾==數(shù)字 布爾轉(zhuǎn)換為數(shù)字 true==1->true true==2->false
8)null==undefined ->true null===undefined ->false
null/undefined和其他的任何值都不相等 null==0->false
9)NaN==NaN ->false NaN和任何的值(包括自己)都不相等
以上就是本文的全部?jī)?nèi)容,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作能帶來(lái)一定的幫助,同時(shí)也希望多多支持腳本之家!
相關(guān)文章
JavaScript碰撞檢測(cè)原理及其實(shí)現(xiàn)代碼
這篇文章主要為大家詳細(xì)介紹了JavaScript碰撞檢測(cè)原理及其實(shí)現(xiàn)代碼,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-03-03JavaScript中關(guān)于for循環(huán)刪除數(shù)組元素內(nèi)容時(shí)出現(xiàn)的問題
昨天在用for循環(huán)進(jìn)行數(shù)組去重的時(shí)候出現(xiàn)的問題小結(jié),怎么解決這個(gè)問題呢,今天小編通過本文給大家講解下js循環(huán)刪除數(shù)組元素的方法,一起看看吧2016-11-11javaScript實(shí)現(xiàn)浮點(diǎn)數(shù)轉(zhuǎn)十六進(jìn)制字符
浮點(diǎn)數(shù)轉(zhuǎn)十六進(jìn)制的方法有很多,在本文將為大家詳細(xì)介紹下js中時(shí)如何實(shí)現(xiàn)的,下面有個(gè)不錯(cuò)的示例,感興趣的朋友可以參考下,希望對(duì)大家有所幫助2013-10-10微信小程序?qū)崿F(xiàn)星級(jí)評(píng)分和展示
這篇文章主要為大家詳細(xì)介紹了微信小程序?qū)崿F(xiàn)星級(jí)評(píng)分和展示效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-07-07解決JS請(qǐng)求路徑控制臺(tái)報(bào)錯(cuò)?Failed?to?launch'xxx'?because?t
這篇文章主要介紹了JS請(qǐng)求路徑控制臺(tái)報(bào)錯(cuò)?Failed?to?launch?‘xxx‘?because?the?scheme?does?not?have?a?registered?handler的問題,本文給大家分享最新完美解決方法,需要的朋友可以參考下2023-03-03