null、undefined、NaN区分解析和条件判定,以及在IF条件中的判定
NaN的理解和用法:
NaN 屬性是代表非數字值的特殊值。該屬性用于指示某個值不是數字。可以把 Number 對象設置為該值,來指示其不是數字值。
Number.NaN 是一個特殊值,說明某些算術運算(如求負數的平方根)的結果不是數字。通常用于檢測? ?parseFloat()?和??parseInt()?的結果,以判斷它們表示的是否是合法的數字。當然也可以用?isNaN()?函數來檢測算數錯誤,比如用?0?作除數的情況。
注意:請使用 isNaN() 來判斷一個值是否是NaN屬性。原因是 NaN 與所有值都不相等,包括它自己。
var aa=0/0; if(isNaN(aa)){ //isNaN()方法時判斷數值是NaN類型的方法;console.log("aa 是非數值"); }?
?
Undefined的理解和使用:
undefined 是全局對象的一個屬性,表示聲明但沒有賦值的變量,或一個并不存在的對象屬性。
注意:
1、不能使用for/in 來 undefined 屬性,也不能使用delete運算符來刪除它,
2、undifined不是常量,可以把它設置為其他值;比如var undefined='foo'
3、可以使用? propName===“undefined”? typeof(propName)===“undefined”或 的形式確定變量是否是undefined;
4、一個函數如果沒有使用return指定返回值,將會返回一個undefined值;
5、null==undefined ;?
6、undefined 作為if(undefined){}的條件時是false;!undefined作為條件時相當于true;
(function(){var b,c=NaN,d="",e=false,f={},g=null,h={name:"zhangsan",age:27};console.log(b); //輸出undefined,未賦值的變量console.log(h.class); //輸出undefined,并不存在的對象屬性console.log(typeof(undefined)); //輸出undefined,類型console.log(b==undefined); //輸出true, null==undefinedconsole.log(b===undefined); //輸出true,可以作為變量的條件判斷console.log(undefined==undefined);//輸出trueconsole.log(undefined===undefined);//輸出trueconsole.log(undefined==NaN); //輸出falseconsole.log(undefined==""); //輸出falseconsole.log(undefined==false); //輸出falseconsole.log(undefined=={}); //輸出falseconsole.log(undefined==null); //輸出trueconsole.log(undefined===null); //輸出false,undefined和null不能絕對相等//console.log(k); //未聲明變量會報錯:k is not definedfunction test(n){console.log(typeof(n));} //輸出undefinedconsole.log(test()); //輸出undefinedvar undefined='foo'; //這樣使得undefined的值和類型都發生了改變,要避免這樣使用console.log(undefined,typeof(undefined)); //輸出foo stringconsole.log(undefined);//輸出undefinedconsole.log(!undefined);//輸出true})();7、typeof()的使用
? ? ? a、typeof()不會在變量未聲明的情況下報錯:
if(typeof(x)==="undefined"){console.log("typeof方法不會再變量未聲明的情況下報錯");}? ? ? b、typeof() 方法返回的字符串有6種可能,分別是:number、string、boolean、object 、function 、 undefined?
?
?
NULL的理解和使用:
值?null?特指對象的值未設置。它是 JavaScript基本類型 之一。可以理解為未指向任何對象的變量,或者是理解為尚未創建的對象;不等于空對象
(function(){var a=null; console.log(typeof(a)); //輸出:objectconsole.log(null==undefined); //輸出:trueconsole.log(null===undefined); //輸出:falseconsole.log(null==false); //輸出:falseconsole.log(null=={}); //輸出:falseconsole.log(null==null); //輸出:trueconsole.log(null); //輸出:trueconsole.log(!null); //輸出:nullconsole.log(isNaN(1+null)); //輸出:falseconsole.log(isNaN(1+undefined)); //輸出:trueif(null){ //輸出:null在條件中是falseconsole.log("null在條件中是true");}else{console.log("null在條件中是false");;}})();1、判斷null:
var arr=[false,null,'',0,undefined,-1];for(var i=0;i<arr.length;i++){if (!arr[i] && typeof(arr[i])!="undefined" && arr[i]!=0){console.log(arr[i]);}} if (false==0){ //為trueconsole.log("IF條件中false==0");}if (""==0){ //為trueconsole.log("IF條件中''==0");}if ([]==0){ //為trueconsole.log("IF條件中[]==0");}if ({}==0){ //為falseconsole.log("IF條件中{}==0");}?
DEMO測試常見變量在 IF條件中的是false 或true??
(function(){var a,b=-1,c=1,d=0,e=null,f=undefined,g='',h=NaN,i = false,j=true,k=[],l={};if (a) {console.log("a值是未賦值變量,在IF條件中 is true");}else{console.log("a值是未賦值變量,在IF條件中 is false");}if (b) {console.log("b值是負數,在IF條件中 is true");}else{console.log("b值是負數,在IF條件中 is false");}if (c) {console.log("c值是正數,在IF條件中 is true");}else{console.log("c值是正數,在IF條件中 is false");}if (d) {console.log("d值是0,在IF條件中 is true");}else{console.log("d值是0,在IF條件中 is false");}if (e) {console.log("e值是null,在IF條件中 is true");}else{console.log("e值是null,在IF條件中 is false");}if (f) {console.log("f值是undefined,在IF條件中 is true");}else{console.log("f值是undefined,在IF條件中 is false");}if (g) {console.log("g值是空字符串,在IF條件中 is true");}else{console.log("g值是空字符串,在IF條件中 is false");}if (h) {console.log("h值是NaN,在IF條件中 is true");}else{console.log("h值是NaN,在IF條件中 is false");}if (i) {console.log("i值是布爾值false,在IF條件中 is true");}else{console.log("i值是布爾值false,在IF條件中 is false");}if (j) {console.log("j值是布爾值true,在IF條件中 is true");}else{console.log("j值是布爾值true,在IF條件中 is false");}if (k) {console.log("k值是空數組,在IF條件中 is true");}else{console.log("k值是空數組,在IF條件中 is false");}if (l) {console.log("l值是空對象,在IF條件中 is true");}else{console.log("l值是空對象,在IF條件中 is false");}if (m) {console.log("未聲明的變量,在IF條件中 is true");}else{console.log("未聲明的變量,在IF條件中 is false");}})();打印結果如下圖:
綜上得出結論是:未賦值變量、0、null、undefined、空字符串、NaN、布爾值false在IF條件中都是false,未定義的變量會報錯;
?
?
?
?
?
?
?
?
?
總結
以上是生活随笔為你收集整理的null、undefined、NaN区分解析和条件判定,以及在IF条件中的判定的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C指针原理(44)-汇编基础
- 下一篇: C指针原理(45)-LINUX应用