是否有任何特殊原因导致以下情况发生?
var newVar;
newVar; //returns "undefined"
在以下情况下会让人感到困惑:
newVar == undefined; //true
newVar == null; //true
我已经阅读了一些线程,建议使用typeof运算符来检测变量是否已声明但已初始化并始终使用null初始化声明的变量,但是:
typeof newVar //returns object
虽然我知道(纠正我,如果我错了)null
是一个对象占位符,因此是一个对象类型,在JavaScript中处理它的方式对我来说真的很混乱。
面向Web开发人员的专业JS说:
null
undefined
的衍生物以什么方式?{/ p>
对不起问题的答案 - 但提前感谢所有答案。
答案 0 :(得分:3)
undefined
和null
之间的关系可能令人困惑,希望这可以解决它:
首先,它们是值two different data types:
Undefined类型只有一个值,称为
undefined
。任何尚未赋值的变量都具有值undefined
。
(这也解释了为什么变量首先具有值undefined
)和
Null类型只有一个值,称为
null
。
如果你使用严格的比较,那就更有意义了:
null === undefined // false
为什么null == undefined
导致true
? Because 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
的最初目的是表示缺少一个对象,但实际上,它可以用来表示任何值的缺失。