What is the difference between Null, NaN and undefined in JavaScript?
在javascript中,Null、NaN和undefined有什么区别?
我已经遇到了这三个值,并理解它们在我发现它们的上下文中是"这里没有任何东西",但我希望得到更详细的解释,解释它们为什么会出现,以及它们在不同上下文中的含义(例如,对数组,对类或变量)。
- 它们的类型是不同的,通常使用它们的上下文也是不同的。
- @是的,我明白,但我希望得到更详细的答案。我也在考虑新用户的问题。
NaN: Not a number:顾名思义,表示一个对象的值不是数字。有许多方法可以生成此错误,其中一种是无效的数学操作,例如0/0或sqrt(-1)。
undefined表示对象没有任何值,因此没有定义。当您创建一个变量而不给它赋值时,就会发生这种情况。
null:表示对象是空的,没有指向任何内存地址。
- 更为非正式和简洁的一点是,NaN-"不是有效数字",通常在你做了一些应该产生一个但不能产生的操作之后。undefined--它存在,但还没有给出值。null—它存在,并且故意给它一个空值。这就是他们背后的想法——基本上是"无价值"的三个不同的符号。当然,如果他们愿意,人们可以用不同的方法来使用它们,但一般来说,这就是他们所理解的。
- @vlaz undefined是访问不存在的内容时使用的默认值。
- @好吧,这取决于你在那里的定义。对我来说,这是有意义的,因为如果您执行obj.missingValue,即使missingValue属性不存在,对象也存在。同样,在只有单个元素的数组上执行arr[42]会生成undefined,但arr本身存在。所以,也许更正确的说法是,你可以访问一个给定的东西,但它还没有被赋予任何价值。