未定义到已声明但未初始化的变量的赋值?

时间:2014-04-13 21:55:27

标签: javascript null undefined

是否有任何特殊原因导致以下情况发生?

var newVar;
newVar; //returns "undefined"

在以下情况下会让人感到困惑:

newVar == undefined; //true
newVar == null; //true

我已经阅读了一些线程,建议使用typeof运算符来检测变量是否已声明但已初始化并始终使用null初始化声明的变量,但是:

typeof newVar //returns object

虽然我知道(纠正我,如果我错了)null是一个对象占位符,因此是一个对象类型,在JavaScript中处理它的方式对我来说真的很混乱。

面向Web开发人员的专业JS说: null == undefined

null undefined的衍生物以什么方式?{/ p>

对不起问题的答案 - 但提前感谢所有答案。

1 个答案:

答案 0 :(得分:3)

undefinednull之间的关系可能令人困惑,希望这可以解决它:

首先,它们是值two different data types

  

Undefined类型只有一个值,称为undefined。任何尚未赋值的变量都具有值undefined

(这也解释了为什么变量首先具有值undefined)和

  

Null类型只有一个值,称为null

如果你使用严格的比较,那就更有意义了:

null === undefined // false

为什么null == undefined导致trueBecause the specification says so

  

2。如果x为null且y未定义,则返回true。

     

3。如果x未定义且y为null,则返回true。

所以,

  

null undefined的衍生物以什么方式?{/ p>

不是。它们是两种不同数据类型的两个不同值。也许在概念上,它是某种"衍生物",但不是从技术角度来看。在这一点上,这本书过于简化或过于复杂。


  

虽然我知道(如果我错了,请纠正我)null是一个对象占位符,因此是一个对象类型,在JavaScript中处理它的方式对我来说真的很混乱。

typeof null返回'object'because the specification says so。由于null is in actually Null的数据类型而非对象(如最顶部所述),这令人困惑。你是对的,也许null的最初目的是表示缺少一个对象,但实际上,它可以用来表示任何值的缺失。