null 与 undefined 区别

我心飞翔 分类:javascript

大多是计算机语言只有个表示‘无’的值,但是js 有两个 null 和 undefined, 两种数据类型很像,而且相等运算符上两者相等,所以感觉两种数据类型都是一个东西么,那么到底有什么区别呢

1.null 和 undefined在js语义里面有明确区别

null: 表示一个值被定义了,定义为空值

undefined: 表示根本不存在定义

所以设置一个值为 null 是合理的,
如: obj.value = null,
但是设置成一个undefined 的值是不合理的,

比如 obj.value = undefined , 因为 undefined表示这个值根本不存在,不能直接赋值undefined

2.判断一个值不存在

所以判断一个值不存在, 就是判断 是否真等于 undefined

value === undefined  
 

这种语义在 JSON 中被强化,标准中不存在undefined 这个类型,但是存在表示 null 的空值,在一些库中的深拷贝 会 忽略 undefined 的值,但不会忽略  null

3.js 中存在 undefined 和 null  也是合理的

首先java 中不存在undefined 也是很合理的: 因为java 是一种静态语言类型,对于java 说不可能存在一个“不存在”的成员,不存在的话就编译失败了,就会报错,所以用null表示空值;但是javascript 是一个动态语言,只有在运行时候才知道,除了存在空值null外,还可能根本就不存在,所以就要用一个表示对某个变量取不到值的数据类型,所以需要设立一个undefined这样的数据类型,所以需要掌握undefined 和 null的语义

回复

我来回复
  • 暂无回复内容