共同点
Undefined和Null都是基本的数据类型,且只有一个值即undefined和null- 在条件表达式中都会被视为假值:在条件语句中,
null和undefined都被视为假值(Falsy)。这意味着它们在布尔上下文中被视为false。
区别
- 数据类型的不同:
undefined代表的含义是未定义,表示未定义或未初始化的值。它通常用于表示变量在声明后但尚未赋值时的状态。null代表的含义是空对象,表示空值或缺失值。它通常用于表示一个变量应该是对象,但目前没有分配对象。
一般变量声明了但还没有定义的时候会返回 undefined,null 主要用于赋值给一些可能会返回对象的变量,作为初始化。
undefined不是JavaScript中的保留字,所以我们在使用的时候应该避免使用undefined 来作为一个变量名,这样的做法会影响对undefined值的判断,如果要安全的获取undefined的值,可以使用void 0
var myVar = void 0; // myVar将被设置为 undefined
console.log(myVar); // 输出 undefined
在 JavaScript 中,
void运算符通常用于创建一个返回undefined的表达式。你可以使用void后跟任何表达式,它将始终返回undefined。
- 类型判断的不同:当对这两种类型使用 typeof 进行判断时,Null 类型化会返回
“object”,这是一个历史遗留的问题。当使用双等号对两种类型的值进行比较时会返回true,使用三个等号时会返回false(ps: 如果想了解关于类型判断的方法可以看我上一篇博客)