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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

js中null,undefined,false,0,'',[],{}判断方法

發布時間:2023/12/4 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 js中null,undefined,false,0,'',[],{}判断方法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

目錄

1.數據類型

2.JSON字符串

3.數字類型

4.非的布爾值

5.與非比較

一、單獨判斷

1.null

2.undefined

3.0

4.“”

5.判斷undefined、null與NaN:


因為獲取到數據的不確定性,常常會導致一些異常情況,使得頁面報錯,往往要兼容這些異常數據,那么前端的包容性就很重要了。所以這里我對一些異常的數據進行了整理。

const datas = [undefined,null,0,'',false,[],{}] let param1 = '類型' let param2 = 'JSON字符串' let param3 = '轉為數字類型' let param4 = '非' let param5 = '與非比較' console.log(datas) // [undefined, null, 0, "", false, Array(0), {…}] _.map(datas || [], data=>{param1+=`${typeof (data)},`param2+=`${JSON.stringify(data)},`param3+=`${Number(data)},`param4+=`${!data},`param5+=`${data==!data},` }) console.log(param1) // 類型 undefined,object,number,string,boolean,object,object, console.log(param2) // JSON字符串undefined,null,0,"",false,[],{}, console.log(param3) // 轉為數字類型NaN,0,0,0,0,0,NaN, console.log(param4) // 非true,true,true,true,true,false,false, console.log(param5) // 與非比較false,false,false,false,false,true,false,

1.數據類型

  • 數據的類型包括原始類型(基本類型)和引用類型。
  • 原始類型(基本類型)包括字符串、數字、布爾、Null、Undefined,按值訪問,可以操作保存在變量中實際的值。原始類型匯總中null和undefined比較特殊。
  • 引用類型包括數組、對象,引用類型的值是保存在內存中的對象。
  • 比較特殊的是typeof null返回“object”。
    歷史原因,規范嘗試修改typeof null返回“null”修改完大量網站無法訪問,為了兼容,或者說歷史原因返回"object"。
    typeof對基本類型和函數對象很方便,但是其他類型就沒辦法了。
    判斷一個對象是不是數組?用typeof返回“object”。對對象的判斷常用instanceof。

2.JSON字符串

這里返回的每一個JSON字符串都是它本身的JSON字符,唯一的,單獨判斷的時候,我經常采用這種方法。

3.數字類型

這里undefined和空對象{}是NAN,而空數組為0。

  • 但是,將空數組與true進行比較時,結果是false。因為,任意值與布爾值進行比較的時候都會轉換為數值進行比較(我一直以為所有的比較都會轉化為簡單的類型比較,這里比較特殊?),布爾值true為1, false為0,空數組轉換為數字的話是0,所以二者并不相等。
  • 如果將兩個數組進行比較, 返回值是false, 因為二者是不同的兩個對象。
  • new Array(1)同樣因為雖然長度為1,但值為undefined,轉換為數字仍未0。
console.log(a == true) // false console.log([] == []) // false console.log(new Array(1) == false)) // true

4.非的布爾值

引用類型轉換了Boolean均為true,所以空數組和空對象進行布爾轉換時均轉換為true。

5.與非比較

對于空數組[]而言,等式右邊的空數組被轉換為了一個布爾值,空數組是true,取反是false;數組左邊與布爾值進行比較(任意值與布爾值進行比較的時候都會轉換為數值進行比較),需要將二者都轉換為數數字,左側空數組轉換為0, 右側相當于false轉換為數字,也是0, 所以二者相等。但是如果是全等比較則不相等,因為不會發生類型轉換。

一、單獨判斷

1.null

和數字運算時,10 + null結果為:10;10 + undefined結果為:NaN。

let a =null JSON.stringify(a)=='null' // true
  • 關系運算符 和 相等運算符 并不是一個類別的.

  • 關系運算符,在設計上總是需要運算元嘗試轉為一個number,而相等運算符在設計上,則沒有這方面的考慮.

  • null > 0 // null 嘗試轉型為number , 則為0 . 所以結果為 false, null >= 0 // null 嘗試轉為number ,則為0 , 結果為 true. null == 0 // null在設計上,在此處不嘗試轉型. 所以 結果為false.

    2.undefined

    undefined表示"缺少值",就是此處應該有一個值,但是還沒有定義。典型用法是:

    (1)變量被聲明了,但沒有賦值時,就等于undefined。

    (2) 調用函數時,應該提供的參數沒有提供,該參數等于undefined。

    (3)對象沒有賦值的屬性,該屬性的值為undefined。

    (4)函數沒有返回值時,默認返回undefined。
    null是一個表示"無"的對象,轉為數值時為0;undefined是一個表示"無"的原始值,轉為數值時為NaN。

    3.0

    0與一些虛值的比較:

    console.log(0 == ''); //true console.log(0 == false); //true console.log(0==[]); //true console.log(0==NaN);//false console.log(0==undefined);//false console.log(0==null);//false console.log(0=={});//false console.log(null == undefined); //true console.log(false == null); //false console.log(false == undefined);//false

    ?

    4.“”

    “”與一些虛值的比較:

    console.log('' == false); //true console.log(''==[]);//true console.log(''==undefined);//false console.log(''==null);//false console.log(''==NAN);//false console.log(''=={});//false


    ?

    5.判斷undefined、null與NaN:

    var tmp = null; if (!tmp) { alert("null or undefined or NaN"); }

    ?

    提示:一般不那么區分就使用這個足夠。


    ---------------------
    作者:weixin_33814685
    來源:CSDN
    原文:https://blog.csdn.net/weixin_33814685/article/details/87515835
    版權聲明:本文為作者原創文章,轉載請附上博文鏈接!

    總結

    以上是生活随笔為你收集整理的js中null,undefined,false,0,'',[],{}判断方法的全部內容,希望文章能夠幫你解決所遇到的問題。

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