null
和undefined
是JavaScript中的两个特殊值
null
表示无对象undefined
表示无值
null
null
常在预期的值应是一个对象。换句话说,当你定义一个变量,它目前没有值,但它将来可能是一个对象,这时候我们应该使用null
console.log(typeof null);
// 输出 'object'
let obj = null
上面的我们定义的变量obj
暗含目前这个变量没有值,但它将来可能是一个对象。同时我们也发现null
的数据类型是一个对象
undefined
undefined
表示一个变量已被声明但尚未赋值的情况。当我们创建一个变量但没有为其赋值时,默认情况下它的值为undefined。也就是说,undefined表示一个变量还没有被初始化
console.log(typeof undefined);
// 输出 'undefined'
let a;
let b = void 0;
console.log(a);
// 输出 undefined
console.log(b);
// 输出 undefined
上面的定义的变量a
和b
,代表目前它们没有值,但将来它们可能为任意值
总结一下:
null
和undefined
都表示无,但是null
无的更具体,准确的说是无对象,而undefined
表示无值,至于值的类型是什么,没有明确规定undefined
用于表示变量已声明但未初始化的状态null
是可以被赋值给变量的,而undefined
通常是由JavaScript运行时自动分配给未初始化的变量