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==undefined
      console.log(b===undefined);       //输出true,可以作为变量的条件判断
      console.log(undefined==undefined);//输出true
      console.log(undefined===undefined);//输出true
      console.log(undefined==NaN);      //输出false
      console.log(undefined=="");       //输出false
      console.log(undefined==false);    //输出false
      console.log(undefined=={});       //输出false
      console.log(undefined==null);     //输出true
      console.log(undefined===null);    //输出false,undefined和null不能绝对相等

      //console.log(k);                   //未声明变量会报错:k is not defined

      function test(n){console.log(typeof(n));}  //输出undefined
      console.log(test());   //输出undefined

      var undefined='foo';   //这样使得undefined的值和类型都发生了改变,要避免这样使用
      console.log(undefined,typeof(undefined));  //输出foo string

      console.log(undefined);//输出undefined
      console.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));             //输出:object
      console.log(null==undefined);       //输出:true
      console.log(null===undefined);      //输出:false
      console.log(null==false);           //输出:false
      console.log(null=={});              //输出:false
      console.log(null==null);            //输出:true
      console.log(null);                  //输出:true
      console.log(!null);                 //输出:null

      console.log(isNaN(1+null));         //输出:false
      console.log(isNaN(1+undefined));    //输出:true

      if(null){                            //输出:null在条件中是false
	 console.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){      //为true
      console.log("IF条件中false==0");
    }
    if (""==0){      //为true
      console.log("IF条件中''==0");
    }
    if ([]==0){      //为true
      console.log("IF条件中[]==0");
    }
    if ({}==0){      //为false
      console.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,未定义的变量会报错;

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值