JavaScript中的null和undefined

null :表示无值;
undefined : 表示一个未声明的变量,
                或已声明但没有赋值的变量,
                或一个并不存在的对象属性。

==运算符将两者看作相等。如果要区分两者,要使用===或typeof运算符。 
使用if (!object){}两者就都包含了

补充:2006.12.6
var obj = "aaa";
var nullobj;

if (obj == null || obj == undefined || (!obj) ){
  alert("obj is null");
 }

if (nullobj == null){
  alert("obj is null");
 }

if (nullobj == undefined){
  alert("obj is undefined ");
 }

if ( !nullobj ){
  alert("! obj ");
 }

关于undefined和"undefined的补充(2007/1/30):

JScript中用于表示未定义的undefined标识符到底是表示什么未定义?它和"undefined"(包括"在内)又有什么区别和联系呢?为什么有的时候可以使用undefined来和变量做比较,而有的时候又不行呢?

underfined和"undefined"的区别大家一眼就能看出来。在一般的认知下,我们认为undefined是JScript提供的一个"关键字",而"undefined"却毫无悬念的就是一个字符串,只是引号内的内容长得和undefined一个样。undefined和"undefined"的区别虽然是十分明显的,但它们的联系也是紧密的。

仔细阅读JScript手册,其实这个underfined是一个"已定义"的Global值,而不是它的字面意义所表达的未定义。我们看下面这个代码示例,很有趣:

<script language="javascript">
alert(undefined);
alert(variable);
</script>

执行的结果是:
    

我们稍微修改一下上面的代码,添加一个typeof调用来看看:

<script language="javascript">
alert(typeof undefined);
alert(typeof variable);
</script>

这下结果应该是什么呢?显示"object"和"undefined"吗?当然不是了,两个alert调用都将显示"undefined"。

所以undefined是脚本引擎定义的一个常量,它在脚本引擎初始化完毕后存在。它的实际作用是用来表示一个已定义的变量的为初始化状态(uninitialized),比如var i;,这时这个i的值就是undefined,而i是实实在在define了的,只是未初始化。这时我们就可以写这样的表达式来对i做判断,比如if ( i == undefined )。如果从未在代码中出现过的变量被使用,这时的未定义的概念就是不undefined所描述的未初始化了,而是说明该变量完全未被登记到脚本引擎的上下文中。使用类似if ( abc == undefined )的语句,将得到类似上图中的第二个错误提示。

在实际使用中,如果使用typeof来判断变量是否未定义,是可以完全兼容未定义(undefined)未初始化(uninitialized)两种情况的,只是很多时我不喜欢使用 if ( typeof xxx == ‘undefined‘ ) 这样的写法,因为literal的字符串容易拼写错误,对用习惯了的强类型语言的角度来看也显得不专业。

时间: 2024-10-26 22:42:01

JavaScript中的null和undefined的相关文章

区别Javascript中的Null与Undefined

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

JavaScript中对null和undefined的理解

前沿: 今天工作中遇到了监视一个变量是undefined,结果判断写的是==null 返回值是true,这个结果引起了我对这两个东西的兴趣. 查询了相关的文章理解并测试了.发现有以下特点: 1.广义上来讲JavaScript中null和undefined是相等的,即null==undefined 返回值是true 2.狭义上来讲JavaScript中null和undefined是不相等的,即null===undefined 返回值是false 3.值得说的是null和undefined在if判断

Javascript中的null、undefined、NaN

1.判断彼此是否相等 function btnClick(){     alert(null == null);//true     alert(undefined==undefined);//true     alert(NaN==NaN);//false } 总结: (1)两个null是相等的 (2)两个undefined是相等的 (3)两个NaN是不相等的 function btnClick(){     alert(null == undefined);//true     alert(

Javascript中的null和 undefined

Javascript Undefined vs NULL Many a times we often get confused on whats the difference between UNDEFINED and NULL. undefined means a variable has been declared but has not yet been assigned a value. On the other hand, null is an assignment value. It

聊一聊js中的null、undefined与NaN

零.寒暄 翻翻自己的博客,上一篇竟然是六月26号的,说好的更新呢?回顾刚刚过去的这个七月,整天都是公司的入职培训加上自己的小论文,每天奋战到凌晨1点多,这是要挂的节奏啊!但是不论怎么说,自己的时间管理还是出了问题,以后一定要好好的规划一下,不多说,来正题! 自己为什么要写这篇文章呢?因为在吃完早饭,消化的时候,整了几行代码,然后发现整挂了... 大致代码如下: function getByClass(clsName, parent){ if(parent=="undefined"){

JavaScript中的null与nudefined

null和undefined 作者总结: null在进行数字运算时可以转换成0,而undefined会被转换成NaN(历史原因): 另外用typeof检测null会返回object对象类型 注意: 概述 null与undefined都可以表示"没有",含义非常相似.将一个变量赋值为undefined或null,老实说,语法效果几乎没区别. var a = undefined; // 或者 var a = null; 上面代码中,a变量分别被赋值为undefined和null,这两种写法

JavaScript中void 0和undefined

众所周知,Undefined是JS语言中的7大基本类型之一,表示未定义,它的值只有一个,就是undefined.任何变量在赋值前都是undefined. 1 typeof Undefined //"undefined" 而在一些框架源码中,会出现一些这样的表达式: if (context === void 0) return func; function foo() { var a = arguments[0] !== (void 0 ) ? arguments[0] : 2; ret

javascript学习笔记 null和undefined

============================================ null是javascript语言的关键字,它表示一个特殊值,常用来描述“空值”.对null执行typeof预算,结果返回字符串“object”,也就是说,可以将null认为是一个特殊的对象值,含义是“非对象”.但实际上,通常认为null是它自有类型的唯一一个成员,它可以表示数字.字符串和对象是“无值”的. JavaScript还有第二个值来表示值的空缺.用未定义的值表示更深层次的“空值”.它是变量的一个取

Javscript中的null和undefined

1.null是JavaScript关键字,含义是“非对象”,它可以表示数字.字符串和对象是“无值”的. var x = null; typeof x ;//返回“object” var x=null,y=null; x===y;//返回true !null;//返回true 2.undefined表示更深层次的”空值“,它的值就是”未定义“. 它是变量的一种取值,表明变量没有初始化. undefined和null不一样,它不是关键字,它是预定义的全局变量. 如果要查询对象属性或数组元素的值时返回