企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
# JavaScript 中的`undefined` vs `null` > 原文: [https://howtodoinjava.com/typescript/undefined-vs-null/](https://howtodoinjava.com/typescript/undefined-vs-null/) 如果变量已经声明但尚未初始化,则称其为“`undefined`”。 而“`null`”被分配给当时没有**值**的变量。 简单来说,当您不为变量赋值时,JavaScript 引擎会将其视为`undefined`。 `null`值是由程序员分配的,以指示变量内部没有变量,但打算在以后的程序执行中使用该值。 ## `undefined` 请参阅下面的 JavaScript 语句以了解`undefined`。 ```java var myVar; //Variable declaration without assigning any value to it console.log( myVar ); //undefined console.log( typeof(myVar) ); //undefined console.log( undeclaredVar ); //Uncaught ReferenceError: undeclaredVar is not defined ``` 如果看到一个值`undefined`的变量,则说明: 1. 该变量已在程序中声明。 2. 变量没有赋值。 3. 如果检查变量`type`,它将是`undefined`。 请注意,这是 JavaScript 中的原始类型之一:字符串,数字,布尔值,`null`,`undefined`,符号(ES6 中的新增功能)。 4. 如果函数返回`undefined`,则未返回任何值。 > `undefined`在 JavaScript 中不是保留关键字。 ## `null` `null`表示故意缺乏的值。 从概念上讲,它与 Java,C# 等其他编程语言中的`null`非常相似。`null`表示缺少标识,表示变量指向没有对象。 ```java var myVar = null; //Variable declared and assigned to null console.log( myVar ); //null console.log( typeof(myVar) ); //object ``` 请注意,`null`的类型为`object`,具有有效值,无属性,不可更改,并且系统中始终只存在相同的单个实例。 ## 将相等运算符与`null`和`undefined`一起使用 当您想清楚地区分`null`和`undefined`变量时,请始终记住使用严格相等运算符(`===`)将变量与`null`和`undefined`进行比较。 > 了解更多:JavaScript 中的[`==` vs `===`](https://howtodoinjava.com/typescript/equals-vs-strict-equals/) ```java var myUndefinedVar; //undefined var myNullVar = null; //null myUndefinedVar == myNullVar; //true - which not correct as both are different myUndefinedVar === myNullVar; //false - correct behavior ``` ## `null`等于零 `null`和`undefined`之间的主要区别在于将它们转换为原始类型的方式。 * `null`在执行基本操作时会转换为零(0)。 * `undefined`转换为`NaN`。 ```java var myUndefinedVar; //undefined var myNullVar = null; //null myUndefinedVar + 100; //NaN myNullVar + 100; //100 ``` 将我的问题放在评论部分。 学习愉快!