再说 JavaScript 的 null 和 undefined
在 JavaScript 中关于空值的定义会应项目的不同而不同,通常在与后台接口对接的时候,判断数据是否存在需要判断空字符串 ""
、null
、undefined
。本文带大家再复习一下 null
和 undefined
。
通常 null
和 undefined
是表示无值情况的判断条件。但如果使用相等操作符 ==
来比较它们,将返回 true
。但是 null
通常被用来显式地不给变量赋值,而 undefined
被 JavaScript 引擎本身隐式地使用来不给变量赋值。这两种基本数据类型用于完成类似的需求,但在严格类型上并不相同,使用 typeof
函数来获取其类型,null
返回 object
,而 undefined
返回 undefined
,由此可以清楚的知道使用 ===
就会返回 false
。
空值判断
正如上面说的,判断空值,在不同的项目下有不同的解释,下面的代码片段可以判断所有类型的空值。
为什么 null 是 object?
表面上看 null
是一个 object
,如果说 null
就是一个 object
是不正确的。事实上,null
是 JavaScript 中的一个基本类型。
这实际上是语言中的一个错误,不幸的是不能那么容易地修复,因为它会破坏现有的代码库。然而,实际上有一个逻辑上的解释,为什么 null
是 JavaScript 中的一个 object
。
在 JavaScript 的初始版本中,值以 32 位单位存储。前 3 位表示数据类型标签,后 3 位表示值。
对于所有object
,类型标记位是 000
,null
从最初的版本开始就被认为是 JavaScrip 中的一个特殊值,null
表示空指针。然而,JavaScript 中没有像 C 语言那样的指针,所以 null
仅仅意味着什么都没有或无效,由所有的 0
表示。因此它的 32 位都是0
。就这样每当 JavaScrip 解释器读取 null
时,它就认为前 3 位是object
类型。
版权声明: 本文为 InfoQ 作者【devpoint】的原创文章。
原文链接:【http://xie.infoq.cn/article/294a900830ae787cbf0824a44】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论