大家都知道,undefined和null都是JavaScript中基本数据类型之一。先来看看两者的定义:
undefined:未定义的值,表示一个变量的原始状态,而非人为操作的结果,常出现在以下情况:声明了变量,但没有赋值
let a;console.log(a) // undefined
访问对象上不存在的属性或者未定义的变量
let obj = {name: 'zs'}console.log(obj.age) // undefinedconsole.log(typeof age) // undefined
函数定义了形参,但没有传递实参
//函数定义了形参 afunction fn(a) {console.log(a); // undefined}fn(); //未传递实参
null 的字面意思是:空值 。这个值的语义是,希望表示一个对象被人为的重置为空对象,而非一个变量最原始的状态 。 在内存里的表示就是,栈中的变量没有指向堆中的内存对象。
应用场景:
初始化一个对象解除引用
注意: null使用typeof时,得到的结果是object
var data = null;console.log(typeof data); // "object"
两者的区别/注意点3.1 typeof的结果不同
typeof undefined // undefinedtypeof null // object
3.2
console.log ( undefined == null );//true 它们的值是一样都是没有值得意思console.log ( undefined === null );//false 它们的值一样但是数据类型不一样
3.3 在if判断中都被判定为false由以上可知,简单的typeof并不能判断出null,那可以使用什么方式来判断呢? 看了这篇Blog你应该会有答案~ https://zhipengyang0605.github.io/js//09/04/JavaScript%E4%B8%AD%E5%A6%82%E4%BD%95%E5%88%A4%E6%96%AD%E7%B1%BB%E5%9E%8B/zhipengyang0605.github.io
参考资料:
JS 应用篇(一):Underfined与Null的区别js中的undefined和null - 庄生梦蝶 - 博客园