Jquery中文网 www.jquerycn.cn
Jquery中文网 >  脚本编程  >  javascript  >  正文 学习javascript的NaN与Null类型

学习javascript的NaN与Null类型

发布时间:2015-02-05   编辑:www.jquerycn.cn
你了解javascript中NaN与Null类型的区别吗?这里为大家介绍下javascript中的NaN与Null类型,有兴趣的朋友参考下吧。

一, NaN
NaN,即非数值是一个特殊的数值,这个数值用于表示一个本来要返回数值的操作数未返回数值的情况。例如,在其它编程语言中,任何数值除以0都会导致错误,从而停止代码执行。但在ECMAScript中,任何数值除以0会返回NaN,因此不会影响其它代码的执行。

NaN本身有两个非同寻常的特点。
首先,任何涉及NaN的操作都会返回NaN,这个特点在多步计算中有可能导致问题。
其次,NaN与任何值都不相等,包括NaN本身。

例如,以下代码返回false:
alert(NaN == NaN);     //false;
针对NaN的这两个特点,ECMAScript定义了isNaN()函数。
此函数接受一个参数,该参数可以是任何类型,而函数会帮我们确定这个参数是否“不是数值”。isNaN()在接收一个值之后,会尝试将这个值转换为数值。某些不是数值的值会直接转换为数值,例如字符串“10”或Boolea值。而任何不能被转换为数值都会导致这个函数返回true。

例子:
 

复制代码 代码示例:
alert(isNaN(NaN));     //true
alert(isNaN(10));      //false (10是一个数值)
alert(isNaN("10"));    //false (可以被转化成数值10)
alert(isNaN("blue"));  //true (不能被转换为数值)
alert(isNaN(true));    //false(可以被转换为数值1)

这个例子测试了5个不同的数值。
测试的第一个值是NaN本身,结果当然会返回true。
然后分别测试了数值10和字符串“10”,结果这两个测试都返回了false,因为前者本身就是数值,而后者可以被转转成数值。
但是,字符串“blue”不能被转换成数值,因此函数返回了true。
由于Boolean值true可以转换成数值1,因此函数返回false。

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

例如:
 

复制代码 代码示例:
var call = null;
alert(typeof car);  //"object"

如果定义的变量准备在将来用于保存对象,那么最好将该变量初始化为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。

您可能感兴趣的文章:
学习javascript的NaN与Null类型
python nan是什么
有关JavaScript中typeof运算符的相关知识
javascript权威指南 学习笔记之null和undefined
控讨:Javascript 强制类型转换
理解js中undefined,null,NaN的区别
python中的nan是什么意思
探讨js中null undefined的用法
《Eloquent JavaScript》笔记–值、类型、操作符
JS类型转换实例分享

[关闭]