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