js基础中Null、undefined、NaN、false、0、{}的理解及使用

数据类型:

值类型(基本类型):字符串(String)、数字(Number)、布尔(Boolean)、对空(Null)、未定义(Undefined)、Symbol。

引用数据类型:对象(Object)、数组(Array)、函数(Function)。

JavaScript 变量均为对象。当您声明一个变量时,就创建了一个新的对象。

注:Symbol 是 ES6 引入了一种新的原始数据类型,表示独一无二的值。

 

简单理解:

null值表示一个空对象指针。如果定义的变量准备用来保存对象,那么最好将该变量初始化为null而不是其他值。这样一来,只要直接检查null值就可以知道相应的变量是否已经保存了一个对象的引用。

undefined 表示一个未声明的变量,或已声明但没有赋值的变量,或一个并不存在的对象属性

NaN是一个Number类型的的特殊值,表示“非数字”(Not a Number)。NaN是JavaScript之中唯一不等于自身的值,不等于任何值,包括它本身。NaN在布尔运算时被当作false,NaN与任何数(包括它自己)的运算,得到的都是NaN当运算失败或者运算无法返回正确的数值时,就会返回NaN。

isNaN()会将括号内的参数利用Number()进行一次转换,故对于字符串、部分对象、部分数组、undefined等,isNaN()会返回true

 

 

typeof()函数

typeof()函数返回的是字符串,有六种可能:"number"、"string"、"boolean"、"object"、"function"、"undefined";

不足:typeof()函数不能区分对象、数组、正则,对它们操作都返回"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) 为 undefined
    console.log(typeof(b));  //typeof(null) 为 object
    console.log(typeof(c));  //typeof(NaN) 为 number
    console.log(typeof(f));  //typeof(NaN) 为 number

    function testBoolean(data){
       if(data){
           console.log(data+" is true");
       }else {
           console.log(data+" is false!");
       }
    }

    testBoolean(a);   //undefined的布尔运算值是false
    testBoolean(b);   //null的布尔运算值是false
    testBoolean(c);   //NaN的布尔运算值是false
    testBoolean(d);   //0的布尔运算值是false
    testBoolean(e);   //空对象的布尔运算值是true
    testBoolean(f);   //空字符串的布尔运算值是false
    console.log('--------------------');

    console.log(undefined==null);  //true,因为undefined是null派生出来的
    console.log(undefined===null);  //false,因为值相同类型不同
    console.log('--------------------');
    console.log(false==null);  //false
    console.log(false==undefined);  //false
    console.log(0==null);  //false
    console.log(0==undefined);  //false
    console.log(""==null);  //false
    console.log(""==undefined);  //false
    console.log(null==0);  //false
    console.log('--------------------');
    console.log(""==0);  //true
    console.log(false==0);  //true

注意:如下null和undefined在关系运算中,-在某种意义上,null就是空的意思,undefined就是未定义,两者既不是false也不是true,所以出现null==false以及null==true,你会发现返回的结果都是false,
-但是如果用他们两者作为判断条件的话,在判断条件中他们可以当做false来作为if语句的判断

    console.log(undefined==true);  //false
    console.log(undefined==false); //false
    console.log(null==true);  //false
    console.log(null==false); //false

 

 

判断是否为null的方法有:

//方法一
var exp =null; 
if (!exp && typeof(exp)!="undefined" && exp!=0) //代表逻辑false,非undefined类型,非false、""
{ 
    alert("is null"); 
} 

//方法二
if (exp===null) //绝对相等
{ 
    alert("is null 2"); 
} 

 

检验空对象或者空数组:

	
JSON.stringify(obj) === '{}';
 
JSON.stringify(obj) === '[]'

 

参考网址:NaN的理解 https://www.jianshu.com/p/747d7ee493fc

  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值