我们学习javascript的时候,首先需要学习的就是数据类型,只要说到Number 、 String 、 Boolean 和 Object 等数据类型,就会涉及到null 和 undefined。初学者对于null 和 undefined可能会有点混乱,本文就整了了一些null 和 undefined的使用与异同点,一起来看看吧。
null
null 值表示一个指向不存在或无效的 对象 或地址( DMN )引用。即使它指向不存在的东西,也没什么,它是一个全局对象(也是JavaScript的原始值之一)。
否定 null 值返回 true ,但将其与 false (或 true )进行比较则会给出 false 。
在基础数学运算中, null 值将被转换为 0 。
undefined
全局属性 nundefined 表示原始值 undefined 。它也是JavaScript的原始数据类型( MDN)。 undefined 是全局作用域的一个变量。 undefined 的最初值就是原始数据类型 undefined 。一个没有被赋值的变量的类型是 undefined 。如果方法或者是语句中操作的变量没有被赋值,则会返回 undefined 。
当你声明一个变量但没有声明它的值时,JavaScript会给它赋值 undefined 。
如果你尝试在任何运算中使用 undefined ,你会得到 NaN 的值。与 null 相似,否定 undefined 值返回 true ,但将其与 true 或 false 作比较则为 false 。
null vs undefined
那么 null 和 undefined 两者之间有什么区别呢?通过上面的内容,我们来比较一下他们之间的相似点和不同之处。
相似之处:
. 当被否定时,两者的值都是 true
. 代表了一些不存在的东西...
差异之处:
. null 表示无,完全不存在的; undefined 表示东西没有定义
. undefined 有自己的数据类型( undefined ), null 只是一个对象
. 在基本算术运算中, null 被视为 0 , undefined 返回的 NaN
还有一些事情需要指出来:
undefined == null 返回的值是 true ,因为JavaScript会尽力将两个值转换为相同类型。
第二个语句, undefined === null 和第一个语句有点不同,他们还在比较数据类型(除了比值,还要比两者数据类型),加上JavaScript很聪明,可以看出他们之间的区别,所以返回的值是 false 。
第三个和最后一个语句, !undefined == !null 和 !undefined === !null 实际上已经非常的简单。由于两个都是否定的返回值(否定的返回值都是 true ,而且其数据类型也相同),所以最终返回的值是 true 。
来源:网络