区分JavaScript中的undefined,null和NaN

先看看下面语句的运行结果:

 1: var a; 
 2: alert(a); //显示"undefined"
 3: alert(typeof a); //显示"undefined"
 4: alert(b); //显示"undefined"

以上可以看出:a的值和类型都是'underfined'

 1: var a = null; 
 2: alert(a); //显示"null"
 3: alert(typeof a); //显示"object"

以上可以看出:a为赋值为null的变量,值为null,类型为object

 1: var b;
 2: alert(null==b); // 显示"true"
 3: alert(null == undefined); //显示"true "

以上说明undefined与null是相等的

 1: var a1; //值和类型都是'underfined'
 2: var a2 = null; //值为null,类型为object
 3: alert(a1 == a2); //显示"true"

以上两例说明null和underfind很相似,至少undefined与null是相等的。

 1: alert(100 + null); //显示"100"
 2: alert(100 + undefined); //显示"NaN" 

以上可以看出null和underfind的区别!

通过以上实验得出以下总结:

1、underfined: 未知的变量名,或未赋值的变量。
2、null: 特殊的object
3、NaN: 特殊的number

 1: alert(typeof(undefined));//显示 'undefined'
 2: alert(typeof(null));//显示 'object'
 3: alert(typeof(""));//显示 'string'
 4: alert(typeof(0));//显示 'number'
 5: alert(typeof(false));//显示 'boolean'
 6: 
 7: var a7 = NaN;
 8: var a8 = undefined; 
 9: 
 10: alert(typeof a7); //显示"number"
 11: alert(typeof a8); //显示"undefined"
以上说明NaN是一种特殊的number,和null、undefined都不会相等。
 

函数参数没有和为空的判断

先看看下面的例子:

 1: Test = function(a)
 2: {
 3: alert(typeof a); 
 4: } 
 5:  
 6: Test(); //没传参数,运行结果为"underfined"
 7: Test(null); //传了空参数,运行结果为"object", 如果要使用a.length等,就会报错,因为对象为空!

所以正确的参数检查是:

1: Test = function(v)
 2: {
 3: if (v !== null && typeof v != 'undefined') 
 4: {
 5: //使用v的属性,例如v.length, v.property
 6: // if (v.offsetX != undefined) 
 7: // if ( value == undefined )
 8: }
 9: }

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值