乐趣区

关于前端: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, 波及数据类型比拟 
  1. 应用场景不同

● null

○ 在咱们须要一个空值或者置空变量的时候手动赋值

○ 原型链的起点地位, 也就是 Object.prototype.__proto__ 是 null

● undefined

○ 在变量申明未赋值的时候就是 undefined

○ 函数只有形参没有实参的时候, 这个形参的值也是 undefined

○ 如果一个函数没有设置返回值, 那么这个函数的返回值也是 undefined

总结

● 总之, 咱们就记住一个准则

○ 当你什么也没有做过的时候, 那么就是 undefined

○ 只有你想白干活的时候, 那么你就手动给他写成 null 就好了

退出移动版