乐趣区

关于javascript:JS中undefined和null的区别

JavaScript 真是一个非凡的语言, 其余语言都只有一个示意 “ 无 ” 的值, 比方 Java 语言用的是 null, C 语言用的是 NULL, Python 语言用的是 None, Ruby 语言用的是 nil。只有 JS 外面示意 “ 空 ” 的有两个, 一个是 undefined, 一个是 null。

很多敌人在刚开始学习的时候, 都会有一个疑难, 就是 undefined 和 null 二者之间有什么区别呢 ? 我什么时候该用什么呢 ? 接下来, 咱们就来好好聊一聊!

JS 的根本数据类型
在 JS 内, 有几个根本数据类型

ES5
Number 数值

String 字符串

Boolean 布尔

Undefined 空

Null 空

ES6
Symbel 惟一值

undefined 和 null 其实就是 JS 中的根本数据类型, 空类型

从这个角度来看, 他们两个是一样的, 都示意 空 的意思, 并且在进行数据类型比拟的时候, 某些状况下也是一样的

console.log(undefined == null) // true
两者的区别
两者的区别还是在于含意, 之前咱们说过, 所有的数据在计算机都是以二进制模式存储的, 那么这两个数据也是会依照二进制模式存储的

undefined 因为示意的是 “ 没有 ”, 所以没得转换, 啥也没有

null 因为示意的是 “ 空 ”, 其实是有内容, 只不过有一个空内容, 存储的是 0000 0000 …

那么反馈到咱们的代码内,undefined 就是没有值, 或者说未被赋值

null 就是有值, 有一个空值, 个别会被当做这里有一个空对象, 也叫作空指针

举个例子 : 咱们以数字为例

这就是有一个具体的数字, 100 200 什么的

这就是 0, 用完了, 没有了

这就是 null, 有一个空架子, 其余的什么都没有

这就是 undefined, 连个架子都没有

依据下面的例子
undefined, 你什么都不须要做, 只有什么也不赋值就是 undefined

null, 须要你赋值, 间接赋值为一个 null, 也就是你要装置一个空架子

两者比照
1. 数据类型不同, 然而值雷同
两个数据别离属于 Undefined 类型和 Null 类型

然而示意的值都是空

所以在比拟的时候, 咱们要留神

console.log(undefined == null) // true, 不波及数据类型比拟
console.log(undefined === null) // false, 波及数据类型比拟
2. 数据类型转换成为数值类型的时候后果不一样
null 示意空, 存储的时候也是一大堆 0, 所以转换为数值是 0

undefined 示意没有, 什么都没有内容转换为数值当前是 NaN

console.log(Number(null)) // 0
console.log(Number(undefined)) // NaN
3. 应用场景不同
null

在咱们须要一个空值或者置空变量的时候手动赋值, 原型链的起点地位, 也就是 Object.prototype.proto 是 null

undefined

在变量申明未赋值的时候就是 undefined, 函数只有形参没有实参的时候, 这个形参的值也是 undefined, 如果一个函数没有设置返回值, 那么这个函数的返回值也是 undefined

总结
总之, 咱们就记住一个准则, 当你什么也没有做过的时候, 那么就是 undefined, 只有你想白干活的时候, 那么你就手动给他写成 null 就好了

退出移动版