undefined 和 null 有什么不同?

在理解 undefinednull 的区别之前,我们必须先理解它们之间的相似性。

  • 它们同属于 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);
   });

比较 nullundefined,当使用 == 时会得到 true,当使用 === 时会得到 false。具体原因我们会在接下来的面试题中给出答案。

   console.log(null == undefined); // true
   console.log(null === undefined); // false

本文章首发在 LearnKu.com 网站上。

本译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接
我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。
上一篇 下一篇
MasterShu
贡献者:1
讨论数量: 0
发起讨论 只看当前版本


暂无话题~