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

如果一个变量根本不存在会发生什么事:

>>> foo
ReferenceError: foo is not defined

我们得到了一个错误信息。我们在该变量上用typeof操作符看看它是什么类型:

>>> typeof foo
"undefined"

我们得到的结果为字符串“undefined”。

如果我们声明一个变量时没有对其进行赋值,调用该变量时并不会出错,但typeof操作符依然会返回字符串“undefined”。

>>> var somevar;
>>> somevar;
undefined
>>> typeof somevar;
"undefined"

而null值就完全是另外一回事啦。 他不能通过javascript来自动赋值,也就是说必须要我们自己手动来给某个变量赋值为null:

>>> var somevar = null;
>>> somevar;
null

而且,typeof操作符返回的是一个对象!

>>> typeof somevar;
"object"

虽然说,undefine与null之间的差别不是很大,但是他们在一些算数运算中表现得非常不一样:

>>> var i = 1 + undefined;  i;
NaN
>>> var i = 1 + null;  i;
1

这是因为undefined和null在被转换为其他基本类型时,方法存在一定的区别,下面我们给出一些可能的转换类型。

转换为数字(把undefined看做字符串,null看做0):

>>> 1 * undefined;
NaN
>>> 1 * null;
0

转换为布尔值:

>>> !!undefined;
false
>>> !!null;
false
    转换为字符串(都相应的转换为字符串):
>>> ''+undefined;
"undefined"
>>> ''+null;
"null"

以上就是undefined与null的区别,以及在运算是要注意的地方。

【转】JavaScript中undefined与null的区别的更多相关文章

  1. JavaScript中undefined与null的区别

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

  2. 快速弄清JavaScript中undefined和null的区别

    ES6的7大数据类型里面有这俩玩意:undefined和null,让接触不深的学习者常常产生混淆,这俩玩意的区别在哪呢? 字面意思上来看,undefined是未(被我们)阐明的,未说明的,null则意 ...

  3. JavaScript中Undefined 和 Null的区别

    Undefined 这个值表示变量不含有值. 可以通过将变量的值设置为 null 来清空变量. 例如: <script> var person; var car="Volvo&q ...

  4. JS中undefined与null的区别

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

  5. 【学习笔记】js中undefined和null的区别和联系

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

  6. js中Undefined 和 Null的区别

    Undefined 和 Null Undefined 这个值表示变量不含有值. 可以通过将变量的值设置为 null 来清空变量. <!DOCTYPE html> <html> ...

  7. javascript 中 undefined 和 null 区别

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

  8. JS中undefined和null的区别

    在写JS脚本的时候,经常会碰到“为空”的判断,其中主要有null和undefined的判断.这两个为空判断的主要区别是: 1) null是JS的关键字,是语法特性.undefined是全局对象的属性, ...

  9. JS中undefined和null的区别,以及出现原因

    区别:null是一个表示无的对象,转换为数值为0: undefined表示一个无的原始值,转化为数值为NAN(与任何数字相加也为NAN) undefined出现原因:(口诀:一变量二函数一对象) 1. ...

随机推荐

  1. linux后端运行(二)

    在用管理员执行一个命令后,用Ctrl+Z把命令转移到了后台.导致无法退出root的. 输入命令:exit终端显示:There are stopped jobs. 解决方法:方法一.输入命令:jobs终 ...

  2. 我和ip_conntrack不得不说的一些事

    面对让人无语的ip_conntrack,我有一种说不出的感觉!自从接触它到现在,已经两年多了,其间我受到过它的恩惠,也被它蹂躏过,被它玩过,但是又不忍心舍弃它,因为我找不到更好的替代.工作中,学习中, ...

  3. 通过分析 JDK 源代码研究 TreeMap 红黑树算法实现--转

    TreeMap 和 TreeSet 是 Java Collection Framework 的两个重要成员,其中 TreeMap 是 Map 接口的常用实现类,而 TreeSet 是 Set 接口的常 ...

  4. VBA-工程-找不到工程或库-解决方案

    近来,越来越多的朋友被“找不到工程或库”的错误所烦恼,所以决定新开一帖来聊聊此问题! QUOTE: 一般情况下,出现此错误是因为找不到引用工程,或找不到与工程语言对应的引用的对象库 出现此类错误可以根 ...

  5. vb.net向Excel中写入值

    根据网上例子结合自己的工具环境修改后测试可以通过 我使用的工具:Microsoft Visual Studio 2010,Excel 2007 一.在D盘新建一个temp文件夹用于存放Excel启动时 ...

  6. jquery 实现图片跳动。提示作用

    需要做几件事: 第一:样式表定义 .red { border: 2px solid #ffffff; } 第二:定义抖动函数 function shake(ele, cls, times) { var ...

  7. 使用markdown及highlight

    一.markdown 安装markdown2 pip install markdown2 应用markdown2 进入blog APP,创建templatetags文件夹,在文件夹内创建__init_ ...

  8. 关于Eclipse生成和导入Patch文件.

    & 生成的文件如下: 如果系统对这个patch文件有识别的话是一个带有问号的icon文件. diff --git a/main/plugins/org.talend.designer.core ...

  9. [设计模式]<<设计模式之禅>>关于接口隔离原则

    在讲接口隔离原则之前,先明确一下我们的主角——接口.接口分为两种: ● 实例接口(Object Interface),在Java中声明一个类,然后用new关键字产生一个实例,它是对一个类型的事物的描述 ...

  10. [BigData]关于Hadoop学习笔记第二天(PPT总结)(一)

    Plan: 分布式文件系统与HDFS HDFS体系结构与基本概念 HDFS的shell操作 java接口及常用api HADOOP的RPC机制 HDFS源码分析 远程debug 自己设计一分布式文件系 ...