前端杂谈 · Web

JS 中 undefined 和 null 有什么不同?

•̀.̫•́✧ · 4月19日 · 2020年本文979字 · 阅读3分钟535

在理解 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
0 条回应