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的字符串容易拼写错误,对用习惯了的强类型语言的角度来看也显得不专业。

JavaScript中的null和undefined的更多相关文章

  1. 浅谈JavaScript中的null和undefined

    浅谈JavaScript中的null和undefined null null是JavaScript中的关键字,表示一个特殊值,常用来描述"空值". 对null进行typeof类型运 ...

  2. 【阿里李战】解剖JavaScript中的 null 和 undefined

    在JavaScript开发中,被人问到:null与undefined到底有啥区别? 一时间不好回答,特别是undefined,因为这涉及到undefined的实现原理.于是,细想之后,写下本文,请各位 ...

  3. 区别Javascript中的Null与Undefined

    在JavaScript中存在这样两种原始类型:Null与Undefined.这两种类型常常会使JavaScript的开发人员产生疑惑,在什么时候是Null,什么时候又是Undefined? Undef ...

  4. 解剖JavaScript中的null和undefined【转】

    在JavaScript开发中,被人问到:null与undefined到底有啥区别? 一时间不好回答,特别是undefined,因为这涉及到undefined的实现原理.于是,细想之后,写下本文,请各位 ...

  5. JavaScript中对null和undefined的理解

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

  6. JavaScript中判断null、undefined与NaN的方法

    1.判断undefined: ? 1 2 3 4 var tmp = undefined; if (typeof(tmp) == "undefined"){ alert(" ...

  7. Javascript中的null和 undefined

    Javascript Undefined vs NULL Many a times we often get confused on whats the difference between UNDE ...

  8. 【转】javascript中not defined、undefined、null以及NaN的区别

    原文链接(点击跳转) 第一:not defined 演示代码:   <span style="font-size:12px;"><span style=" ...

  9. JavaScript数据类型 typeof, null, 和 undefined

    JavaScript 数据类型 在 JavaScript 中有 5 种不同的数据类型: string number boolean object function 3 种对象类型: Object Da ...

随机推荐

  1. VC2010 配置OpenGL环境(转)

    转自http://www.cnblogs.com/longdouhzt/archive/2012/02/13/2350094.html OpenGL开发环境简介 基于OpenGL标准开发的应用程序运行 ...

  2. JSTORM 问题排查

    ## 运行时topology的task列表中报"task is dead"错误有几个原因可能导致出现这个错误: 1. task心跳超时,导致nimbus主动kill这个task所在 ...

  3. HBase学习之路 (八)HBase大牛博客

    主要是记录一下链接 http://hbasefly.com

  4. ajax调用webservice 跨域问题

    用js或者jquery跨域调用接口时 对方的接口需要做jsonp处理,你的ajax jsonp调用才可以 egg 接口中已经做了jsonp处理,所以可以跨域调用 //$.ajax({ // url: ...

  5. virtualbox+vagrant学习-2(command cli)-22-vagrant validate命令

    Validate 格式: vagrant validate [options] 该命令用于验证你的Vagrantfile文件 userdeMacBook-Pro:~ user$ vagrant val ...

  6. java 学习 命令行运行java程序

    之前学习python,由于公司需要.现在不得已转java. 1.命令运行java程序. 程序名字:input.java code: /** * Created by liumeide on 2017/ ...

  7. ZOJ 3203 Light Bulb (三分+计算几何)

    B - Light Bulb Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%lld & %llu Submit ...

  8. httpclient,java跨系统调用,第三接口调用实例

    java跨系统调用,第三方接口调用,有三种方式 1:rmi/rpc 传序列化对象 2:webservice 传xml 3:restful 传json 接下来给大家演示怎么用httpclient调用re ...

  9. 洛谷P1028动规算法

    首先我们可以写一个递归 #include<bits/stdc++.h> using namespace std; long long n; int main(){ long long f[ ...

  10. linux定时任务-crontab

    使用场景: 有时候线上服务器挂了,或者一些数据推送不正常,一般来说我们需要做的就是将项目重启运行,或者检查核对出问题的位置,来快速解决,很多时候我们不得不登上服务器来查看,这个对于目前工作日益繁忙的我 ...