在理解 undefined
和 null
的区别之前,我们必须先理解它们之间的相似性。
- 它们同属于 JavaScript’s 的 7 种原始类型。
let primitiveTypes = ['string','number','null','undefined','boolean','symbol', 'bigint'];
- 它们都是 虚值。当使用
Boolean(value)
或者!!value
将它们转换为布尔值时都会得到false
。
console.log(!!null); // false
console.log(!!undefined); // false
console.log(Boolean(null)); // false
console.log(Boolean(undefined)); // false
好了,让我们探讨一下它们之间的不同吧。
- undefined 是未分配值的变量的初始值,或没有 显式 返回值的函数。像 console.log(1)。或者对象中不存在的属性。JavaScript 引擎为我们完成了这些 undefined 值的 分配。
let _thisIsUndefined;
const doNothing = () => {};
const someObj = {
a : "ay",
b : "bee",
c : "si"
};
console.log(_thisIsUndefined); // undefined
console.log(doNothing()); // undefined
console.log(someObj["d"]); // undefined
null
是 “一个表示空值的值”。null
是已经 显式 定义变量的值。在下面的例子中,fs.readFile
方法没有抛出错误的时候,我们就会得到一个null
值。
fs.readFile('path/to/file', (e,data) => {
console.log(e); // 当没有错误发生时为 null
if(e){
console.log(e);
}
console.log(data);
});
比较 null
和 undefined
,当使用 ==
时会得到 true
,当使用 ===
时会得到 false
。
console.log(null == undefined); // true
console.log(null === undefined); // false
必须 注册 为本站用户, 登录 后才可以发表评论!