JavaScript中的null在其他编程语言中也很常见,但是JavaScript在设计的过程中null自动转换为0,为了更好表示空,这个时候undefined出现了,null通过typeof结果是“object”,undefined通过typeof表示这个值是这个类型的唯一成员。null和undefined中都是表示值的空缺,不过两者当做布尔值时都是false,通过==的时候都是相等的,但是null和undefined分别字符串,数字,布尔值相比都是false。

Null和Undefined区别

JavaScript取值为null的情况有两种:

//获取不到元素
1.var notExist= document.getElementById('notExist');//null //原型链的终点,也是返回null的
2.Object.getPrototypeOf(Object.prototype)//null 

undefined的情况如下:

①变量声明,未赋值;

var a;//undefined

②查询对象的属性或数组元素的值不存在时,返回undefined;

var arr=[1,2,3];//博客园-FlyElephant
console.log(arr[5]);//undefined   

③函数没有任何返回值的时候返回undefined;

function f(){};console.log(f());//undefined

④引用没有提供实参的函数形参的值会得到undefined:

function f(x){console.log(x);}f();//undefined

题外话

以前有一个很经典的JavaScript问题:

if (!("a" in window)) {
var a = 1;
}
console.log(a);//博客园-FlyElephant

最后输出的是undefined,其中a是可以访问的,所有的声明都是提前声明的,a最开始的定义值是undefined,"a" in window是真,因此赋值语句没法执行到,最后的执行结果是undefined;

JavaScript-undefined与null区别的更多相关文章

  1. Javascript undefined 和 null

    Javascript undefined 和 null 虽然 Javascript 一切皆对象,但是类型还是有区别的. undefined 表示 未定义的数据类型. null 表示空对象. 在判断时没 ...

  2. 来理解undefined 和 null 区别

    之前虽然也知道这两个之间的区别,但是让我描述的话,感觉上还是说的不是很清楚.今天也详细看了一次这个知识点,现在来说说这两者间的区别. null: Null类型,代表“空值”,代表一个空对象指针,使用t ...

  3. Undefined、Null区别渗透

    Undefined 类型表示未定义,它的类型只有一个值,就是 undefined.任何变量在赋值前是 Undefined 类型.值为 undefined,一般我们可以用全局变量 undefined(就 ...

  4. JavaScript:undefined And null差异

    班吃饭的时候,同事偶然问了一个问题:undefined和null究竟有什么差别?无法回答,回去查阅相关文档,算了有了一个了解,做相关的总结.在開始之前,请看例如以下代码,算是抛出这个问题: conso ...

  5. undefined和null区别

    undefined类型只有一个值就是undefined,没有必要显式地声明一个变量为undefined. null类型其实就是一个对象的空指针,所以用typeof null 才会显示为object. ...

  6. javascript 中 undefined 和 null 区别

    1.相同点 如果我们直接用 undefined == null  比较他们是相等的返回的将是 true. 2.区别 当我们用undefined === null 比较的时候最后返回的将是 false. ...

  7. Javascript中的null和 undefined

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

  8. JavaScript中undefined与null的区别

    通常情况下, 当我们试图访问某个不存在的或者没有赋值的变量时,就会得到一个undefined值.Javascript会自动将声明是没有进行初始化的变量设为undifined. 如果一个变量根本不存在会 ...

  9. 【转】JavaScript中undefined与null的区别

    通常情况下, 当我们试图访问某个不存在的或者没有赋值的变量时,就会得到一个undefined值.Javascript会自动将声明是没有进行初始化的变量设为undifined. 如果一个变量根本不存在会 ...

  10. javascript中的undefined与null的区别

    一.相似性 在JavaScript中,将一个变量赋值为undefined或null,老实说,几乎没区别. var a = undefined; var a = null; 上面代码中,a变量分别被赋值 ...

随机推荐

  1. c# HttpWebRequest 和HttpWebResponse 登录网站或论坛(校内网登陆)

    这是登录校内网的代码呵呵自己注册一个试试吧我的账号和密码就不给了 不过可以加我为好友      冯洪春  貌似校内上就我一个 Form1.cs代码: using System;using System ...

  2. BZOJ.5068.友好的生物(思路)

    题目链接 \(Description\) 求\[\max\{\sum_{i=1}^{k-1}(C_i*|a_{x,i}-a_{y,i}|)-C_k*|a_{x,k}-a_{y,k}|\}\] \(So ...

  3. BZOJ.1951.[SDOI2010]古代猪文(费马小定理 Lucas CRT)

    题目链接 \(Description\) 给定N,G,求\[G^{\sum_{k|N}C_n^k}\mod\ 999911659\] \(Solution\) 由费马小定理,可以先对次数化简,即求\( ...

  4. 20172308 实验四《Java面向对象程序设计 》实验报告

    20172308 2017-2018-2 <程序设计与数据结构>实验四报告 课程:<程序设计与数据结构> 班级: 1723 姓名: 周亚杰 学号:20172308 实验教师:王 ...

  5. CentOS 7设置KVM硬盘模式为SCSI

    找到一下节点,把target节点的dev改成s开头,bus改成scsi即可,并删除address节点: 以此内推,如果要修改为ide需要修改dev为h开头,bus改成ide. 参考: https:// ...

  6. IBDAP-CMSIS-DAP

    IBDAP-CMSIS-DAP Armstart's CMSIS-DAP firmware implementation in gcc and makefile. http://www.armstar ...

  7. SQL Server 2012 Always on Availability Groups安装

    http://blog.csdn.net/kevinsqlserver/article/details/7886455

  8. linux 内核升级 转

    inux 内核升级 2011-03-25 23:13:28 分类: LINUX 因要测试一些软件,需要2.6.30以上的内核,安装好CentOS 5.5,内核是2.6.18-194.el5.这次的升级 ...

  9. 在ASP.NET MVC中使用Knockout实践06,自定义验证、异步验证

    在上一篇中体验了Knockout.Validation的基本验证,本篇体验自定义验证和异步验证. 自定义验证规则 ko.validation有一个rules属性,专门用来存放验证规则,它是一个键值对集 ...

  10. JForum 源码分析

    怎么才算好的源码分析呢?当然我这个肯定不算.我想大概分为几个层面吧,写写注释那算最基本的了,写写要点思路和难点,算是还不错拉,再难的就是跳出源码举一反三,形成自己的一套思路吧.好好努力吧. 这次针对的 ...