和undefined不同,null是JavaScript语言中的关键字,它不允许被赋值,并且表示的是一个特殊值,一般用来描述为“空值”。
如果我们把null放到typeof运算符中,将返回字符串“object”,虽然返回值是对象,但是实际上其含义为“非对象”,因为它并不符合对象内容的所有特点,所以我们也可以将它归类为一个特殊的对象值。不过也因为这一点,typeof也饱受争议,我们也俗称null为“空对象”。null是也是自己独占一个类型,和undefined一样,是自己家族中唯一的一个成员。
它可以一般可以表示任意内容的“无值”状态。大多数编程语言其实都具备“无值”状态,一般用null或者nil表示,不过显然 JavaScript 使用的是前者。
虽然null和undefined都是各自为一个不同的种类,但是它们共同的含义,就是都表示为“值的空缺”,所以两者甚至有时还可以互换。在判断相等运算符“==”中,还会认为两者是相等的,所以如果在严格的场合,我们需要全等运算符“===”来区分它们。
在默认解析布尔值类型时,它们的值都是假(false)值,例如放到if语句中。
null和undefined中都不可以包含任何属性和方法,在null和undefined中如果我们对其进行属性或者方法赋值都会产生一个类型错误。
尽管 null 和 undefined 有着这样细微的关系,但是它们的用途却完全不同。在一般情况下,我们都没有必要把一个变量的值显式的设定为undefined,但是同样的规则对null并不适用。也有人说undefined是表示系统级、意外的或者类似错误值的空缺,而null则表示程序级、正常的或我们想要的值的空缺。其实换句话说,只要意在保存对象的变量还没有真正的保存对象内容,我们就应该设定其变量为null值占位,而不是undefined。这样做不仅可以体现null为空对象指针的惯例,而且也有助于进一步区分null和undefined。
本文原创,未经作者允许不可转载!
更多内容,欢迎关注作者微信公众号:李游Leo老师前端讲堂!
暂无评论
违反法律法规
侵犯个人权益
有害网站环境