JS中六种数据类型(二)——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。

以下是不正确的方法:

1、 var exp = null;

if (exp == null)

{

alert("is null");

}

exp 为 undefined 时,也会得到与 null 相同的结果,虽然 null 和 undefined 不一样。

注意:要同时判断 null 和 undefined 时可使用本法。

2、 var exp = null;

if (!exp)

{

alert("is null");

}

如果 exp 为 undefined,或数字零,或 false,也会得到与 null 相同的结果,虽然 null 和二者不一样。

注意:要同时判断 null、undefined、数字零、false 时可使用本法。

3、  var exp = null;

if (typeof exp == "null")

{

alert("is null");

}

为了向下兼容,exp 为 null 时,typeof null 总返回 object,所以不能这样判断。

4、 var exp = null;

if (isNull(exp))

{

alert("is null");

}

VBScript 中有 IsNull 这个函数,但 JavaScript 中没有。

--------------------------------------------------------------------------------

以下是正确的方法:

1、  var exp = null;

if (!exp && typeof exp != "undefined" && exp != 0)

{

alert("is null");

}

typeof exp != "undefined" 排除了 undefined;

exp != 0 排除了数字零和 false。

更简单的正确的方法:

2、 var exp = null;

if (exp === null)

{

alert("is null");

}

--------------------------------------------------------------------------------

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

欢迎关注微信公众号:wcs290130——JavaScript那些事儿。

时间: 2024-10-14 00:07:02

JS中六种数据类型(二)——Null的相关文章

JS中六种数据类型(二)——Null (转)

Null类型是第二个只有一个值的数据类型,这个特殊的值是null,从逻辑角度来看,null值表示一个空对象指针,而这也正是使用typeof操作符检测null值会返回"object"的原因,如下面的例子所示: var car =null; alert(typeof null);  //object(其实这是JavaScript最初实现的一个错误,后来被ECMAScript沿用下来) 如果定义的变量准备在将来用户保存对象,那么最好将该变量初始化为null而不是其他值.这样一来,只要直接检查

JS中六种数据类型(一)——undefined (转)

JS中有6种数据类型:Undefined.Null.Boolean.Number.String和Object.JS中不支持任何创建自定义类型的机制,而所有值最终都将是这6种数据类型.其数据类型的动态性特点足以表示所有数据.JS提供typeof操作符来检测变量的数据类型. (typeof返回的是字符串有六种可能:"number","string","boolean","object","function",&

JS中六种数据类型(一)——undefined

JS中有6种数据类型:Undefined.Null.Boolean.Number.String和Object.JS中不支持任何创建自定义类型的机制,而所有值最终都将是这6种数据类型.其数据类型的动态性特点足以表示所有数据. (typeof返回的是字符串有六种可能:"number","string","boolean","object","function","undefined"). 我

JS中六种数据类型(三)——Boolean (转)

Boolean类型是ECMAScript中使用最多的一种类型,该类型只有两个字面值:true和false.这两个值与数字值不是一回事,因此true不一定等于1,而false也不一定等于0.需要注意的是,Boolean类型的字面值true和false是区分大小写的.也就是说,True和False(以及其他的混合大小写形式)都不是Boolean值,只是标识符. 虽然Boolean类型的字面值只有两个,但ECMAScript中所有类型的值都有与这两个Boolean值等价的值. var message=

JS中六种数据类型(六)——Object(转)

ECMAScript中的对象是可变的键控集合(即一组数据和功能的集合).它将很多值聚合在一起,可通过名字访问这些值.对象也可看做属性的容器,每个属性都是一个名/值对.属性的名字可以是包括空字符串在内的任意字符串.属性值可以是除undefined值之外的任何值.对象最常见的用法是创建(create).设置(set).查找(query).删除(delete).检测(test)和枚举(enumerate)他的属性.  一.属性类型 ECMA-262第5版在定义只有内部采用的特性时,描述了属性的各种特征

JS中六种数据类型(四)——Number (转)

Number类型应该是ECMAScript中最令人关注的数据类型了,这种类型使用IEEE754格式来表示整数和浮点数值(浮点数值在某些语言中也被称为双精度数值).为支持各种数值类型,ECMA-262定义了不同的数值字面量. 最基本的数值字面量格式是十进制整数,十进制整数可以像下面这样直接在代码中输入: var  item =55;   //整数 除了以十进制表示外,整数还可以通过八进制(以8为基数)或十六进制(以16为基数)的字面值来表示.其中,八进制字面值的第一位必须是零(0),然后是八进制数

JS中六种数据类型(五)——String (转)

String类型用于表示由零或多个16位Unicode字符组成的字符序列,即字符串.字符串可以由双引号(")或单引号(')表示,因此下面两种字符串的写法都是有效的: var firstName="Marry"; var firstName='Jane'; 与PHP中的双引号和单引号会影响对字符串的解释方式不同,ECMAScript中的这两种语法形式没有什么区别.用双引号表示的字符串和用单引号表示的字符串完全相同.不过,以引号开头的字符串也必须以双引号结尾,而以单引号开头的字符

JS中六种数据类型(六)——Object

   ECMAScript中的对象是可变的键控集合(即一组数据和功能的集合).它将很多值聚合在一起,可通过名字访问这些值.对象也可看做属性的容器,每个属性都是一个名/值对.属性的名字可以是包括空字符串在内的任意字符串.属性值可以是除undefined值之外的任何值.对象最常见的用法是创建(create).设置(set).查找(query).删除(delete).检测(test)和枚举(enumerate)他的属性.  一.属性类型 ECMA-262第5版在定义只有内部采用的特性时,描述了属性的各

js中的数据类型及其转换

Js中的数据类型 Js中的数据类型一共有六种,即number,string,boolean,underfine,null,object. 一,number Number数据类型指的是数字,可以为整型,也可以是浮点数.如 var a=12,b=12.5; 二,string 字符串由零个或多个字符构成,字符包括字母,数字,标点符号和空格;需要注意的是 字符串必须放在引号里(单引号或双引号); 如 var bob=”man”; alert(“bob”); alert(bob); 浏览器首先会弹出包含有