Null,NaN和JavaScript中的undefined有什么区别?

Ale*_*ock 2 javascript

是什么区别NullNaN并且undefined在JavaScript?

我遇到了所有三个值,并且在我发现它们的上下文中将它们理解为“这里没有任何东西”,但我希望对它们发生的原因及其含义进行更详细的解释。在不同的上下文中(例如,针对数组,类或变量)。

Dan*_*ran 5

NaN: Not a number:顾名思义,它用来表示对象的值不是数字。有很多方法可以产生此错误,一种是无效的数学运算,例如0/0或sqrt(-1)

undefined:表示对象没有任何值,因此未定义。当您创建变量并且不为其分配值时,会发生这种情况。

null:这意味着该对象为空,并且没有指向任何内存地址。

  • 更非正式和简洁的`NaN` - 通常在您执行一些应该产生但不能产生的操作之后“不是有效数字”。`undefined` - 它*存在*但还没有被赋予一个值*。`null` - 它存在并且故意被赋予一个空值。这就是他们背后的想法——基本上是“非价值”的三个不同的能指。人们当然可以根据需要以不同的方式使用它们,但*通常*这就是他们的理解。 (3认同)
  • @Bergi 好吧,这取决于您在那里的定义。对我来说这是有道理的,因为如果你做 `obj.missingValue`,即使 `missingValue` 属性不存在,*object* 也存在。类似地,对只有一个元素的数组执行 `arr[42]` 会产生 `undefined`,但 `arr` 本身存在。所以,也许更正确的说法是你可以*访问*一个给定的东西,但它还没有被赋予任何价值。 (2认同)