开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第14天,点击查看活动详情
当我们在学习 JS 的时候,首先接触到的就是它的数据类型,undefined 和 null 都是 JS 的数据类型, null 与 undefined 也常常会放在一起进行比较,如果对这两个值所表示的含义不太明朗,下图可以帮助我们很好的区分:
翻译软件对于他们的解释是这样的:
1、null 与 undefined 的数据类型
undefined 和 null 的数据类型,可以看到是不同的,null 是一个空对象:
执行以下代码:
console.log(null==undefined); //true
console.log(null===undefined); //false
我们来观察一下运行结果:
- "=="会自动进行类型转换,null == undefined 时两端的值全部默认转换成了false,所以结果为 true
- "==="不会对数据进行类型转换,null 和 undefined 类型不同,所以结果为 false
除此之外,null 和 undefined 在转换成 Number 数字类型的时候,
null
默认转成 0
undefined
默认转成 NaN
2、undefined
- undefined 代表的含义是未定义,变量声明了但还没有赋值的情况会返回 undefined
let a
console.log(a) // undefined
或:
console.log(a)
var a = 1 // undefined
注:用 var 声明的变量,在这里可以输出 undefined 存在变量提升的情况 除此之外, 对象中某个属性字段未定义或者函数未传参数等都会出现 undefined 的情况。
- undefined 不是保留字
在 js 中 undefined 不属于保留字,所以 undefined 可以作为一个变量名出现,但是这样会影响我们对 undefined 值的判断。使用void 0
来表示 undefined 值相对更安全。
3、null
- null 代表空对象。一般会用于变量值的初始化
- null 是原型顶端
- 把变量赋值为 null ,可以手动释放内存
总结
操作 | null | undefined |
---|---|---|
typeof(类型判断) | Object | undefined |
Number()(数字类型) | 0 | NAN |
== | 相等 | |
=== | 不相等 |