大多数
计算机语言只有一个值,表示否。
Javascript语言有两个值表示否:未定义的和空的,这是有点奇怪的。
一、相似性
在Javascript中,变量被赋值为未定义的或null,老实说,几乎没有
区别。
var =未定义;
var = null;
在上面的代码中,变量分别被赋值为未定义的和空的,这两种形式几乎是等价的。
在if语句中,未定义的和空的都自动
转换为false,等效
操作符甚至
报告两个是相等的。
如果(!未定义)
console.log('undefined是虚假的);
是false未定义的
如果(!null)
console.log('null是虚假的);
为false
未定义的=空的
/真
上面的代码
显示了两个行为的相似性!
由于未定义和空的含义和用法几乎相同,我们为什么需要同时
设置两个值呢这并不是增加Javascript的复杂性,没有任何困难。这是一个麻烦的初学者,眄
公司开发的Javascript语言替代飞镖语言是明确定义为空,没有定义!
二、历史
原因 最近,当我读到新书说Javascript
原来,这是Javascript的历史有关。当Javascript 1995出生,就像java,只有空是设置为无的价值。
根据C语言的传统,null被设计成自动转换为0。
数字(NULL)
0
5 +空
/ / 5
但布兰登·艾奇,Javascript的设计师,觉得这是不够的,原因有二。
首先,空,如java,被视为一个对象。然而,Javascript的数据
类型分为两类:原始类型(原始)和综合型(复杂)。布兰登·艾奇认为无是不是该对象的值。
其次,Javascript的初始版本不包含
错误处理机制。当数据类型不匹配,它
经常自动转换或失败无声。布兰登·艾奇觉得如果空自动变成0,找到一个错误,这是不容易的。
所以,布兰登·艾奇设计了一个未定义的。
三。原设计
Javascript的原始版本是如此可辨:null是表示否的对象。当它转换为数值时,它是0。未定义是表示否的原始值。
编号(未定义)
5定义
四。目前的使用
情况 然而,在实践中,上述差别很快就被证明是不可行的。目前,零和未定义基本上是同义的,只有细微的差别。
NULL表示没有对象的典型用法是:
(1)作为
函数的
参数,函数的参数不是对象。
(2)对象的原型链的结束。
Object.getPrototypeOf(对象。原型)
未定义的意思是缺乏价值,典型用法是:
(1)声明变量,但是当没有赋值时,它等于未定义。
(2)当调用函数时,不提供应该提供的参数,参数等于未定义的参数。
(3)对象没有赋值
属性,其值是未定义的。
(4)当函数不返回值时,
默认返回未定义。
var i;
未定义的
函数f(x){ console.log(x)}
(f)未定义的
新对象();
OP / /未定义
var = f();
未定义的
这里有一点摘要。
NULL是表示非对象的Javascript关键字。
未定义没有指示值,表示该值不存在或未初始化。
相同点
差异
自主式独特价值
NULL是一个对象,未定义的是一个保留字。
没有属性和
方法 在数学
运算中,null被转换为0,在数学运算中,未定义的不能转换或转换成。
= =等于,不相等
无效的!=未定义的 /真
所有
都是false值,而布尔变量的值是相同的。
NULL是空对象,未定义的是窗口的属性(但不是对象属性)。
警报(typeof null)/对象(类定义警报 / /定义);