Javascript 中 null、NaN和undefined的区别

1.类型分析:

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

代码

Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->var a1;
var a2 = true;
var a3 = 1;
var a4 = "Hello";
var a5 = new Object();
var a6 = null;
var a7 = NaN;
var a8 = undefined;

alert(typeof a);   //显示"undefined"
alert(typeof a1); //显示"undefined"
alert(typeof a2); //显示"boolean"
alert(typeof a3); //显示"number"
alert(typeof a4); //显示"string"
alert(typeof a5); //显示"object"
alert(typeof a6); //显示"object"
alert(typeof a7); //显示"number"
alert(typeof a8); //显示"undefined"

从上面的代码中可以看出未定义的值和定义未赋值的为undefined,null是一种特殊的object,NaN是一种特殊的number。

2.比较运算

Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->var a1;        //a1的值为undefined
var a2 = null;
var a3 = NaN;

alert(a1 == a2); //显示"true"
alert(a1 != a2); //显示"false"

alert(a1 == a3); //显示"false"
alert(a1 != a3); //显示"true"

alert(a2 == a3); //显示"false"
alert(a2 != a3); //显示"true"

alert(a3 == a3); //显示"false"
alert(a3 != a3); //显示"true"

从上面的代码可以得出结论:(1)undefined与null是相等;(2)NaN与任何值都不相等,与自己也不相等。

JavaScript undefined 属性

定义和用法

undefined 属性用于存放 JavaScript 的 undefined 值。

语法

undefined

说明

无法使用 for/in 循环来枚举 undefined 属性,也不能用 delete 运算符来删除它。

undefined 不是常量,可以把它设置为其他值。

当尝试读取不存在的对象属性时也会返回 undefined。

提示和注释

< 值等价于 undefined 运算符认为 运算来测试某个值是否是未定义的,因为="=" ="==">

< 表示无值,而>

实例

在本例中,我们将检测两个变量中未定义的一个:

Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/--><script type="text/javascript">
var t1=""
var t2

if (t1===undefined) {document.write("t1 is undefined")}
if (t2===undefined) {document.write("t2 is undefined")}

</script> 输出:

t2 is undefined

[补充]
Null 数据类型 在 Jscript 中数据类型 null 只有一个值:null。关键字 null 不能用作函数或变量的名称。 

包含 null 的变量包含“无值”或“无对象”。换句话说,该变量没有保存有效的数、字符串、boolean、数组或对象。可以通过给一个变量赋 null 值来清除变量的内容。 

请注意,在 Jscript 中,null 与 0 不相等(与在 C 和 C++ 中不同)。同时应该指出的是,Jscript中 typeof 运算符将报告 null 值为 Object 类型,而非类型 null。这点潜在的混淆是为了向下兼容。 

Undefined 数据类型 如下情况使返回 undefined 值: 

对象属性不存在, 声明了变量但从未赋值。 注意不能通过与 undefined 做比较来测试一个变量是否存在,虽然可以检查它的类型是否为“undefined”。在以下的代码范例中,假设程序员想测试是否已经声明变量 x : 

// 这种方法不起作用 if (x == undefined)     // 作某些操作 // 这个方法同样不起作用- 必须检查 // 字符串 "undefined" if (typeof(x) == undefined)     // 作某些操作 // 这个方法有效 if (typeof(x) == "undefined")     // 作某些操作 考虑将 undefined 值与null做比较。 

someObject.prop == null; 如下情况时,比较的结果为 true, 

如果属性 someObject.prop 包含 null 值, 如果属性 someObject.prop 不存在。 要检查一个对象属性是否存在,可以使用新的 in 运算符: if ("prop" in someObject) // someObject 有属性 ’prop’ 

在JavaScript中,null与undefined一度使人迷惑。下面的分析,有利于你更清晰的认知它(或者让你更迷惑): 

- null是关键字;undefined是Global对象的一个属性 

- null是对象(空对象, 没有任何属性和方法);undefined是undefined类型的值。试试下面的代码: 

       document.writeln(typeof null); //return object        document.writeln(typeof undefined); //return undefined 

- 对象模型中,所有的对象都是Object或其子类的实例,但null对象例外:        document.writeln(null instanceof Object); //return false 

- null“等值(==)”于undefined,但不“全等值(===)”于undefined:        document.writeln(null == undefined); //return true        document.writeln(null === undefined); //return false 

- 运算时null与undefined都可以被类型转换为false,但不等值于false:        document.writeln(!null, !undefined); //return true,true        document.writeln(null==false); //return false        document.writeln(undefined==false); //return false 
时间: 2024-08-24 12:08:52

Javascript 中 null、NaN和undefined的区别的相关文章

JavaScript中object和Object有什么区别

JavaScript中object和Object有什么区别,为什么用typeof检测对象,返回object,而用instanceof 必须要接Object呢 -------------------------------------------------------------------- 这个问题和我之前遇到的问题非常相似,我认为这里有两个问题需要解决,一个是运算符new的作用机制,一个是function关键字和Funtion内置对象之间的区别.看了一些前辈的博客和标准,这里帮提问者总结一

JavaScript中的property和attribute的区别

时间: 2013-09-06 | 10:24 作者: 玉面小飞鱼 分类: DOM, js相关, 前端技术 2,222 次浏览 1. 定义 Property:属性,所有的HTML元素都由HTMLElement类型表示,HTMLElement类型直接继承自Element并添加了一些属性,添加的这些属性分别对应于每个HTML元素都有下面的这5个标准特性: id,title,lang,dir,className.DOM节点是一个对象,因此,他可以和其他的JavaScript对象一样添加自定义的属性以及方

Oracle中Null与空字符串&#39; &#39;的区别

含义解释: 问:什么是NULL? 答:在我们不知道具体有什么数据的时候,也即未知,可以用NULL,我们称它为空,ORACLE中,含有空值的表列长度为零. ORACLE允许任何一种数据类型的字段为空,除了以下两种情况: 1.主键字段(primary key), 2.定义时已经加了NOT NULL限制条件的字段 说明: 1.等价于没有任何值.是未知数. 2.NULL与0.空字符串.空格都不同. 3.对空值做加.减.乘.除等运算操作,结果仍为空. 4.NULL的处理使用NVL函数. 5.比较时使用关键

Django与SQL语言中——NULL与空字符串的区别

SQL有指定空值的独特方式,它把空值叫做NULL. Null在数据库中表示 不知道的数据,主要有3种意思: 1)知道数据存在,但不知道具体值. 2)不知道数据是否存在. 3)数据不存在. 在SQL中, NULL的值不同于空字符串,就像Python中None不同于空字符串("")一样.这意味着某个字符型字段(如VARCHAR)的值不可能同时包含NULL和空字符串. 这会引起不必要的歧义或疑惑. 为什么这条记录有个NULL,而那条记录却有个空字符串? 它们之间有区别,还是数据输入不一致?

Javascript中的toString和valueOf的区别

语法:objectname.toString([radix])objectname要为其搜索字符串表示形式的对象.radix可选,为将数字值转换为字符串指定一个基数. 此值仅用于数字.toString 方法是一个所有内置的 JavaScript 对象的成员.它的行为取决于对象的类型: valueOf:返回指定对象的基元值. 语法:object.valueOf( )object 引用是任何内部 JavaScript 对象,将通过不同的方式为每个内部 JavaScript 对象定义 valueOf

【转】Javascript 中 null、NaN和undefined的区别

原址:http://www.cnblogs.com/qiantuwuliang/archive/2010/01/12/1645302.html 1.类型分析: js中的数据类型有undefined,boolean,number,string,object等5种,前4种为原始类型,第5种为引用类型. 代码 var a1;var a2 = true;var a3 = 1;var a4 = "Hello";var a5 = new Object();var a6 = null;var a7 

JavaScript中null和undefined的区别

在JavaScript中存在这样两种原始类型:Null与Undefined.这两种类型常常会使JavaScript的开发人员产生疑惑,在什么时候是Null,什么时候又是Undefined? Undefined类型只有一个值,即undefined.当声明的变量还未被初始化时,变量的默认值为undefined.Null类型也只有一个值,即null.null用来表示尚未存在的对象,常用来表示函数企图返回一个不存在的对象. js 代码 var oValue; alert(oValue == undefi

JavaScript中null和undefined

JavaScript的数据类型大体分为两类:原始类型和对象类型.其中,原始类型包括数字.字符串和布尔值.此外,JavaScript中还有两个特殊的原始值:null(空)和undefined(未定义),它们不是数字.字符串和布尔值,它们通常分别代表各自特殊类型中唯一的成员. null null是JavaScript语言的关键字,它表示一个特殊值,常用来描述“空值”.对null执行typeof预算,结果返回字符串“object"(如下图),所以说,也可以将null认为是一个特殊的对象值,它的含义是“

JavaScript中null和undefined小结

一. 前言 因为对javascript中的null和undefined有些分不清楚,因此在试验之后进行一下小结. 二. 源码 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width"> <title></title>