原文: https://howtodoinjava.com/typescript/undefined-vs-null/

如果变量已经声明但尚未初始化,则称其为“undefined”。 而“null”被分配给当时没有的变量。

简单来说,当您不为变量赋值时,JavaScript 引擎会将其视为undefinednull值是由程序员分配的,以指示变量内部没有变量,但打算在以后的程序执行中使用该值。

undefined

请参阅下面的 JavaScript 语句以了解undefined

  1. var myVar; //Variable declaration without assigning any value to it
  2. console.log( myVar ); //undefined
  3. console.log( typeof(myVar) ); //undefined
  4. console.log( undeclaredVar ); //Uncaught ReferenceError: undeclaredVar is not defined

如果看到一个值undefined的变量,则说明:

  1. 该变量已在程序中声明。
  2. 变量没有赋值。
  3. 如果检查变量type,它将是undefined。 请注意,这是 JavaScript 中的原始类型之一:字符串,数字,布尔值,nullundefined,符号(ES6 中的新增功能)。
  4. 如果函数返回undefined,则未返回任何值。

undefined在 JavaScript 中不是保留关键字。

null

null表示故意缺乏的值。 从概念上讲,它与 Java,C# 等其他编程语言中的null非常相似。null表示缺少标识,表示变量指向没有对象。

  1. var myVar = null; //Variable declared and assigned to null
  2. console.log( myVar ); //null
  3. console.log( typeof(myVar) ); //object

请注意,null的类型为object,具有有效值,无属性,不可更改,并且系统中始终只存在相同的单个实例。

将相等运算符与nullundefined一起使用

当您想清楚地区分nullundefined变量时,请始终记住使用严格相等运算符(===)将变量与nullundefined进行比较。

了解更多:JavaScript 中的== vs ===

  1. var myUndefinedVar; //undefined
  2. var myNullVar = null; //null
  3. myUndefinedVar == myNullVar; //true - which not correct as both are different
  4. myUndefinedVar === myNullVar; //false - correct behavior

null等于零

nullundefined之间的主要区别在于将它们转换为原始类型的方式。

  • null在执行基本操作时会转换为零(0)。
  • undefined转换为NaN
  1. var myUndefinedVar; //undefined
  2. var myNullVar = null; //null
  3. myUndefinedVar + 100; //NaN
  4. myNullVar + 100; //100

将我的问题放在评论部分。

学习愉快!