Javascript 中的 undefined,null, NaN的区别

在 Java ,C这样的语言中, 使用一个变量之前,需要先定义这个变量并指定它的数据类型,是整型,字符串型,....

但是在js 中定义变量统一使用 var , 或者不使用var 也可以使用。

那么js 中是否有数据类型的概念呢? 当然有, 使用 typeof 就可以判断这个变量的数据类型:


  1. <!--Add by oscar999-->  
  2. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">  
  3. <HTML>  
  4. <HEAD>  
  5. <TITLE> New Document </TITLE>  
  6. <META NAME="Author" CONTENT="oscar999">  
  7. <script>  
  8. s = "This is Test";  
  9. alert(typeof(s));  
  10. </script>  
  11. </HEAD>  
  12.   
  13. <BODY>  
  14.   
  15. </BODY>  
  16. </HTML>  


以上例子弹出的值是 "string", 由此可以看出, js 也是有数据类型的。

js中的数据类型有undefined,boolean,number,string,object等5种,前4种为原始类型,第5种为引用类型。

原始类型和引用类型有什么区别?引用的概念其他语言的引用很类似, 就是一个地址。看一下这个例子就知道了。


  1. <!--Add by oscar999-->  
  2. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">  
  3. <HTML>  
  4. <HEAD>  
  5. <TITLE> New Document </TITLE>  
  6. <META NAME="Author" CONTENT="oscar999">  
  7. <script>  
  8. var obj = new Object();  
  9. var objCopy = obj;  
  10. obj.att1 = "obj attribute";  
  11. alert(objCopy.att1);  
  12. </script>  
  13. </HEAD>  
  14.   
  15. <BODY>  
  16.   
  17. </BODY>  
  18. </HTML>  

别忽略了object 类型的这种特性哦, 这个是会被经常误用的地方。类似上面的obj的改变引起了objCopy的改变。

除了以上5 中类型之外, 还有一种 “function”的类型。


undefined 和 null, NaN 的区别


有了上面的介绍,就可以很容易把undefined 和其他的两个区分开来。

undefined判断的是变量的类型,而其他两个判断是变量的值。

undefined可以用来表示以下的状况

1. 表示一个未声明的变量,

2. 已声明但没有赋值的变量,

3. 一个并不存在的对象属性


null 是一种特殊的object ,表示无值;

NaN是一种特殊的number ,表示无值,它给任何值包括自己比较都是false,所以它的比较只能用isNaN();



例如:

JavaScript中,哪些值能作为if的条件呢

1、布尔变量true/false
2、数字非0,非NaN/ (0 或NaN)

3、对象非null/(null或undefined) 
4、字符串非空串(“”)/空串("")

综上所述,对于字符串,不用写一大堆if(str!=null && str!=undefined && str !=''), 只要用一句


if(!str){
    //do something
}

就可以了。

 

对于数字的非空判断,则要考虑使用isNaN()函数,NaN不和任何类型数据相等,包括它本身,只能用isNaN()判断。

对于数字类型,if(a)语句中的a为0时if(a)为假,非0时if(a)为真



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值