【转】JavaScript中undefined与null的区别
通常情况下, 当我们试图访问某个不存在的或者没有赋值的变量时,就会得到一个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的区别的更多相关文章
- JavaScript中undefined与null的区别
通常情况下, 当我们试图访问某个不存在的或者没有赋值的变量时,就会得到一个undefined值.Javascript会自动将声明是没有进行初始化的变量设为undifined. 如果一个变量根本不存在会 ...
- 快速弄清JavaScript中undefined和null的区别
ES6的7大数据类型里面有这俩玩意:undefined和null,让接触不深的学习者常常产生混淆,这俩玩意的区别在哪呢? 字面意思上来看,undefined是未(被我们)阐明的,未说明的,null则意 ...
- JavaScript中Undefined 和 Null的区别
Undefined 这个值表示变量不含有值. 可以通过将变量的值设置为 null 来清空变量. 例如: <script> var person; var car="Volvo&q ...
- JS中undefined与null的区别
1.概述: 在JavaScript中存在这样两种原始类型:Null与Undefined.这两种类型常常会使JavaScript的开发人员产生疑惑,在什么时候是Null,什么时候又是Undefined? ...
- 【学习笔记】js中undefined和null的区别和联系
在JavaScript中存在这样两种原始类型:Null与Undefined.这两种类型常常会使JavaScript的开发人员产生疑惑,在什么时候是Null,什么时候又是Undefined? Undef ...
- js中Undefined 和 Null的区别
Undefined 和 Null Undefined 这个值表示变量不含有值. 可以通过将变量的值设置为 null 来清空变量. <!DOCTYPE html> <html> ...
- javascript 中 undefined 和 null 区别
1.相同点 如果我们直接用 undefined == null 比较他们是相等的返回的将是 true. 2.区别 当我们用undefined === null 比较的时候最后返回的将是 false. ...
- JS中undefined和null的区别
在写JS脚本的时候,经常会碰到“为空”的判断,其中主要有null和undefined的判断.这两个为空判断的主要区别是: 1) null是JS的关键字,是语法特性.undefined是全局对象的属性, ...
- JS中undefined和null的区别,以及出现原因
区别:null是一个表示无的对象,转换为数值为0: undefined表示一个无的原始值,转化为数值为NAN(与任何数字相加也为NAN) undefined出现原因:(口诀:一变量二函数一对象) 1. ...
随机推荐
- android拦截短信并屏蔽系统的Notification
拦截短信有几个关键点: 1.android接收短信时是以广播的方式 2.程序只要在自己的Manifest.xml里加有"接收"SMS的权限 <uses-permission ...
- ABAP 日期时间函数(转)
转自:http://www.sapjx.com/abap-datetime-function.html 函数名称 (内页-点击名称可查看操作) 函数说明 备注 FIMA_DATE_CREATE RP_ ...
- SSAS 实例重命名
在某些时候我们可能想对现有的SSAS实例进行重命名之类的,比如:我以前有两个SSAS,一个2005,一个2008R2,其中我们2005是一开始安装的,并且是默认实例,2008R2是命名 ...
- Python学习 之 异常
1.python中处理异常的方式 #coding:utf8 filename=raw_input("请输入你要操作的文件") try: f=open(filename) print ...
- 通过分析 JDK 源代码研究 TreeMap 红黑树算法实现--转
TreeMap 和 TreeSet 是 Java Collection Framework 的两个重要成员,其中 TreeMap 是 Map 接口的常用实现类,而 TreeSet 是 Set 接口的常 ...
- cocos2d-x lua table与json的转换
cocos2d-x lua table与json的转换 version: cocos2d-x 3.6 1.引入json库 require("src/cocos/cocos2d/json&qu ...
- Linux 学习之路:read,array,declare
一.read 键盘读取变量 用法:read -p "PLS keyin your name:" -t 60 name -p :后面接提示符,-t 后面接可以等待的时间,其中nam ...
- PHP用反撇号(`,也就是键盘上ESC键下面的那个,和~在同一个上面)执行外部命令
例如: echo `whoami`; // 导出数据库,要导入的文件夹必须要有可写权限, -u -p之后的内容必须要紧挨着写 echo `mysqldump -h localhost -u$DbUse ...
- 实现Square类,让其继承自Rectangle类,并在Square类增添新属性和方法,在2的基础上,在Square类中重写Rectangle类中的初始化和打印方法
实现Square类,让其继承自Rectangle类,并在Square类增添新属性和方法,在2的基础上,在Square类中重写Rectangle类中的初始化和打印方法 #import <Found ...
- Android 自学之滚动视图ScrollView
滚动视图ScrollView由FarmeLayout派生而出,他就是一个用于为普通组件添加垂直滚动条的组件:ScrollView里面最多包含一个组件,而ScrollView的作用就是为该组件添加一个垂 ...