js 进阶 | null 与 undefined

291 阅读2分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第14天,点击查看活动详情

当我们在学习 JS 的时候,首先接触到的就是它的数据类型,undefined 和 null 都是 JS 的数据类型, null 与 undefined 也常常会放在一起进行比较,如果对这两个值所表示的含义不太明朗,下图可以帮助我们很好的区分:

image.png

翻译软件对于他们的解释是这样的:

image.png

1、null 与 undefined 的数据类型

undefined 和 null 的数据类型,可以看到是不同的,null 是一个空对象:

image.png

执行以下代码:

console.log(null==undefined);    //true 
console.log(null===undefined);    //false   

我们来观察一下运行结果:

image.png

  • "=="会自动进行类型转换,null == undefined 时两端的值全部默认转换成了false,所以结果为 true
  • "==="不会对数据进行类型转换,null 和 undefined 类型不同,所以结果为 false

除此之外,null 和 undefined 在转换成 Number 数字类型的时候,

image.png null 默认转成 0

undefined 默认转成 NaN

2、undefined

  1. undefined 代表的含义是未定义,变量声明了但还没有赋值的情况会返回 undefined
let a
console.log(a) // undefined

或:

console.log(a)
var a = 1 // undefined

注:用 var 声明的变量,在这里可以输出 undefined 存在变量提升的情况 除此之外, 对象中某个属性字段未定义或者函数未传参数等都会出现 undefined 的情况。

  1. undefined 不是保留字

在 js 中 undefined 不属于保留字,所以 undefined 可以作为一个变量名出现,但是这样会影响我们对 undefined 值的判断。使用void 0 来表示 undefined 值相对更安全。

3、null

  • null 代表空对象。一般会用于变量值的初始化
  • null 是原型顶端
  • 把变量赋值为 null ,可以手动释放内存

总结

操作nullundefined
typeof(类型判断)Objectundefined
Number()(数字类型)0NAN
==相等
===不相等