JavaScript中6种数据类型详解(二)—— Null

      Null类型是第二个只有一个值的数据类型,这个特殊的值是null,从逻辑角度来看,null值表示一个空对象指针,而这也正是使用typeof操作符检测null值会返回“object”的原因,如下面的例子所示:

var car =null;
alert(typeof null);  //'object(其实这是JavaScript最初实现的一个错误,后来被ECMAScript沿用下来)'

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

if(car != null){
 //'对car执行某些操作'
}

      实际上,undefined值是派生自null值的,因此ECMA-262规定对他们的相等测试要返回true:

alert(null == undefined)  //'true'

      这里,位于null和undefined之间的相等操作符(==)总是返回true,不过要注意的是,这个操作符出于比较的目的会转换其操作数。
      尽管null和undefined有这样的关系,但它们的用途完全不同,如前所述,无论什么情况下都没有必要把一个变量的值显式地设置为undefined,可视同样的规则对null却不适用。换句话说,只要意在保存对象的变量还没有真正保存对象,就应该明确地让该变量保存null值。这样做不仅可以体现null作为空对象指针的惯例,而且也有助于进一步区分null和undefined。在程序中如何判断变量是否为null。
      以下是不正确的方法:

var exp = null;
if (exp == null){
    alert("is null");
}
'exp 为 undefined 时,也会得到与 null 相同的结果,虽然 null 和 undefined 不一样。
注意:要同时判断 null 和 undefined 时可使用本法。'
var exp = null;
if (!exp){
     alert("is null");
 } 
' 如果 exp 为 undefined,或数字零,或 false,也会得到与 null 相同的结果,虽然 null 和二者不一样。
注意:要同时判断 null、undefined、数字零、false 时可使用本法。'
var exp = null;
if (typeof exp == "null"){
    alert("is null");
}
'为了向下兼容,exp 为 null 时,typeof null 总返回 object,所以不能这样判断。'
var exp = null;
if (isNull(exp)){
    alert("is null");
}
'VBScript 中有 IsNull 这个函数,但 JavaScript 中没有。'

      以下是正确的方法: :

var exp = null;
if (!exp && typeof exp != "undefined" && exp != 0){
    alert("is null");
}
'typeof exp != "undefined" 排除了 undefined;exp != 0 排除了数字零和 false。更简单的正确的方法:'
var exp = null;
if (exp === null){
    alert("is null");
}

尽管如此,我们在 DOM 应用中,一般只需要用 (!exp) 来判断就可以了,因为 DOM 应用中,可能返回 null,可能返回 undefined,如果具体判断 null 还是 undefined 会使程序过于复杂。

欢迎访问 我的个人博客-BlueBird 查看更多文章

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值