日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

JS中的NaN和isNaN,简直是双重人格?

發布時間:2025/4/16 javascript 75 豆豆
生活随笔 收集整理的這篇文章主要介紹了 JS中的NaN和isNaN,简直是双重人格? 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
?number數字類型   包括數字和NaN,NaN:not a number 但是它是數字類型的 isNaN的用法:檢測當前值是否不是有效數字,返回true代表不是有效數字,返回false是有效數字 //=>語法:isNaN([value]) var num=12; isNaN(num); //->檢測num變量存儲的值是否為非有效數字 false isNaN('13') =>false isNaN('你好呀') =>true isNaN(true) =>false isNaN(false) =>false isNaN(null) =>false isNaN(undefined) =>true isNaN({age:9}) =>true isNaN([12,23]) =>true isNaN([12]) =>false isNaN(/^$/) =>true isNaN(function(){}) =>true 1、isNaN檢測的機制:首先驗證當前要檢測的值是否為數字類型的,如果不是,瀏覽器會默認的把值轉換為數字類型
把非數字類型的值轉換為數字 其它基本類型轉換為數字:直接使用Number這個方法轉換的 [字符串轉數字] Number('13') ->13 Number('13px') ->NaN 如果當前字符串中出現任意一個非有效數字字符,結果則為NaN Number('13.5') ->13.5 可以識別小數

[布爾轉數字]

Number(true) ->1 Number(false) ->0 [其它] Number(null) ->0 Number(undefined) ->NaN 把引用數據類型值轉換為數字:先把引用值調取toString轉換為字符串,然后再把字符串調取Number轉換為數字
[對象] ({}).toString() ->'[object Object]' ->NaN [數組] [12,23].toString() ->'12,23' ->NaN [12].toString() ->'12' ->12 [正則] /^$/.toString() ->'/^$/' ->NaN [其他] Number('') ->0 [].toString() -> '' => isNaN([]):false 2、當前檢測的值已經是數字類型,是有效數字返回false,不是返回true(數字類型中只有NaN不是有效數字,其余都是有效數字)   parseInt / parseFloat等同于Number,也是為了把其它類型的值轉換為數字類型 和Number的區別在于字符串轉換分析上 Number:出現任意非有效數字字符,結果就是NaN parseInt:把一個字符串中的整數部分解析出來,parseFloat是把一個字符串中小數(浮點數)部分解析出來   parseInt('13.5px') =>13 parseFloat('13.5px') =>13.5
parseInt('width:13.5px') =>NaN 從字符串最左邊字符開始查找有效數字字符,并且轉換為數字,但是一但遇到一個非有效數字字符,查找結束 3. NaN的比較 NaN==NaN:false NaN和誰都不相等,包括自己 if(Number(num)==NaN){alert('num不是有效數字!');}
NaN和誰都不相等,條件永遠不成立(即使num確實不是有效數字,轉換的結果確實是NaN,但是NaN
!=NaN的)if(isNaN(num)){//=>檢測是否為有效數字,只有這一種方案alert('num不是有效數字!') }

?

【布爾 boolean】

只有兩個值:true / false,把其它數據類型的值轉換為布爾類型:除了“NaN/0/''/null/undefined”這五個值會轉換為false,其余的都會轉換為true 哪些情況需要把其它類型值轉換為布爾呢? // [手動自己轉] Boolean(0) => false Boolean([]) => true []==false => true // 都轉換為數字 0==0 ![]==false => true // 先算![],把數組轉換為布爾取反=>false =>false==false 除了Boolean可把其他類型轉化為數字類型外,!和雙!!也是把其他類型轉化成布爾類型,項目中一般用!!轉換(逼格高~) !0 =>true 嘆號在這里是取反的意思(先轉化為布爾類型然后再取反) !!0 =>false 兩個嘆號只剩下轉換為布爾類型了,等價于Boolean // [程序自己需要轉換 =>一般都是條件判斷的時候],if內的值會默認轉換成布爾類型,如果為真執行,為false則不執行 if(1){//=>如果條件成立,執行大括號中的代碼//=>瀏覽器會把1作為條件:把它轉換為布爾的TRUE,條件成立 } 特殊情況:數學運算和字符串拼接 “+”   當表達式中出現字符串,就是字符串拼接,否則就是數學運算 1+true =>2 //數學運算 '1'+true =>'1true' //字符串拼接 [12]+10 =>'1210' //雖然現在沒看見字符串,但是引用類型轉換為數字,首先會轉換為字符串,所以變為了字符串拼接 ({})+10 =>"[object Object]10" []+10 =>"10" {}+10 =>10? ? ?結果為10,但是這個和以上說的沒有半毛錢關系,因為它根本就不是數學運算,也不是字符串拼接,它是兩部分代碼 {} 代表一個代碼塊(塊級作用域)? ?+10 才是我們的操作? ? ??嚴格寫法:{}; +10;

轉載于:https://www.cnblogs.com/jiajialove/p/10998710.html

總結

以上是生活随笔為你收集整理的JS中的NaN和isNaN,简直是双重人格?的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。