js基础中Null、undefined、NaN、false、0、{}的理解及使用
數(shù)據(jù)類型:
值類型(基本類型):字符串(String)、數(shù)字(Number)、布爾(Boolean)、對(duì)空(Null)、未定義(Undefined)、Symbol。
引用數(shù)據(jù)類型:對(duì)象(Object)、數(shù)組(Array)、函數(shù)(Function)。
JavaScript 變量均為對(duì)象。當(dāng)您聲明一個(gè)變量時(shí),就創(chuàng)建了一個(gè)新的對(duì)象。
注:Symbol 是 ES6 引入了一種新的原始數(shù)據(jù)類型,表示獨(dú)一無(wú)二的值。
?
簡(jiǎn)單理解:
null值表示一個(gè)空對(duì)象指針。如果定義的變量準(zhǔn)備用來(lái)保存對(duì)象,那么最好將該變量初始化為null而不是其他值。這樣一來(lái),只要直接檢查null值就可以知道相應(yīng)的變量是否已經(jīng)保存了一個(gè)對(duì)象的引用。
undefined 表示一個(gè)未聲明的變量,或已聲明但沒(méi)有賦值的變量,或一個(gè)并不存在的對(duì)象屬性。
NaN是一個(gè)Number類型的的特殊值,表示“非數(shù)字”(Not a Number)。NaN是JavaScript之中唯一不等于自身的值,不等于任何值,包括它本身。NaN在布爾運(yùn)算時(shí)被當(dāng)作false,NaN與任何數(shù)(包括它自己)的運(yùn)算,得到的都是NaN。當(dāng)運(yùn)算失敗或者運(yùn)算無(wú)法返回正確的數(shù)值時(shí),就會(huì)返回NaN。
isNaN()會(huì)將括號(hào)內(nèi)的參數(shù)利用Number()進(jìn)行一次轉(zhuǎn)換,故對(duì)于字符串、部分對(duì)象、部分?jǐn)?shù)組、undefined等,isNaN()會(huì)返回true
?
?
typeof()函數(shù)
typeof()函數(shù)返回的是字符串,有六種可能:"number"、"string"、"boolean"、"object"、"function"、"undefined";
不足:typeof()函數(shù)不能區(qū)分對(duì)象、數(shù)組、正則,對(duì)它們操作都返回"object",正則在Safar5,Chrome7之前的版本中返回"function";
ES6新增:Symbol(ES6新增)=> "symbol"
- console.log(typeof(a)); //typeof(undefined) 為 undefined
- console.log(typeof(b)); //typeof(null) 為 object
- console.log(typeof(c)); //typeof(NaN) 為 number
?
?
運(yùn)算使用
- 在IF條件運(yùn)算中undefined、null、NaN、false、0、""、false都是相對(duì)等于(==)false的,{}和[]是true;
- 其中? "undefined==null" 和 "0==false"、" '? '==false" 的關(guān)系運(yùn)算結(jié)果都是true
?
let a;let b=null;let c=NaN;let d=0;let e={};let f="";console.log(typeof(a)); //typeof(undefined) 為 undefinedconsole.log(typeof(b)); //typeof(null) 為 objectconsole.log(typeof(c)); //typeof(NaN) 為 numberconsole.log(typeof(f)); //typeof(NaN) 為 numberfunction testBoolean(data){if(data){console.log(data+" is true");}else {console.log(data+" is false!");}}testBoolean(a); //undefined的布爾運(yùn)算值是falsetestBoolean(b); //null的布爾運(yùn)算值是falsetestBoolean(c); //NaN的布爾運(yùn)算值是falsetestBoolean(d); //0的布爾運(yùn)算值是falsetestBoolean(e); //空對(duì)象的布爾運(yùn)算值是truetestBoolean(f); //空字符串的布爾運(yùn)算值是falseconsole.log('--------------------');console.log(undefined==null); //true,因?yàn)閡ndefined是null派生出來(lái)的console.log(undefined===null); //false,因?yàn)橹迪嗤愋筒煌琧onsole.log('--------------------');console.log(false==null); //falseconsole.log(false==undefined); //falseconsole.log(0==null); //falseconsole.log(0==undefined); //falseconsole.log(""==null); //falseconsole.log(""==undefined); //falseconsole.log(null==0); //falseconsole.log('--------------------');console.log(""==0); //trueconsole.log(false==0); //true注意:如下null和undefined在關(guān)系運(yùn)算中,-在某種意義上,null就是空的意思,undefined就是未定義,兩者既不是false也不是true,所以出現(xiàn)null==false以及null==true,你會(huì)發(fā)現(xiàn)返回的結(jié)果都是false,
-但是如果用他們兩者作為判斷條件的話,在判斷條件中他們可以當(dāng)做false來(lái)作為if語(yǔ)句的判斷
?
?
判斷是否為null的方法有:
//方法一 var exp =null; if (!exp && typeof(exp)!="undefined" && exp!=0) //代表邏輯false,非undefined類型,非false、"" { alert("is null"); } //方法二 if (exp===null) //絕對(duì)相等 { alert("is null 2"); }?
檢驗(yàn)空對(duì)象或者空數(shù)組:
JSON.stringify(obj) === '{}';JSON.stringify(obj) === '[]'?
參考網(wǎng)址:NaN的理解?https://www.jianshu.com/p/747d7ee493fc
總結(jié)
以上是生活随笔為你收集整理的js基础中Null、undefined、NaN、false、0、{}的理解及使用的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Tensroflow随笔-测试集
- 下一篇: C指针原理(36)-C快速入门