编辑
2023-07-11
JS基础
00
请注意,本文编写于 226 天前,最后修改于 211 天前,其中某些信息可能已经过时。

目录

定义
类型
赋值
比较
转换
总结

JavaScript中,nullundefined是两种特殊的值,它们经常让开发者感到困惑。本文将从定义、类型、赋值、比较、转换等方面,详细介绍它们的区别和用法,帮助你更好地理解和使用这两个值。

定义

nullundefined都表示"没有",但是它们有不同的含义。

  • null表示"没有值",它是一个特殊的对象值,表示空或不存在。
  • undefined表示“未定义”,它是一个特殊的原始值,表示变量未被赋值或属性不存在。

类型

nullundefined都属于基本类型(primitive type),但是它们的类型判断有些特殊。

  • null的类型是object,这是JavaScript的一个历史遗留问题。实际上,null不是一个对象,而是一个基本类型的值。
  • undefined的类型是undefined,它是唯一一个与自身相同的类型。

我们可以用typeof运算符来判断一个值的类型,例如:

js
typeof null // "object" typeof undefined // "undefined"

但是,typeof运算符对于null的判断是不准确的,所以我们可以用另一个运算符instanceof来判断一个值是否为null,例如:

js
null instanceof Object // false

赋值

nullundefined都可以被赋值给变量或属性,但是它们有不同的含义和用法。

  • null一般用来表示变量或属性有意为"空值",也就是说,它们本来应该有一个值,但是目前没有。例如,我们可以用null来表示一个空对象、一个空数组、一个空函数等。
  • undefined一般用来表示变量或属性无意为“无值”,也就是说,它们本来不应该有值,但是由于某些原因导致了未定义。例如,我们可以用undefined来表示一个未声明的变量、一个未赋值的变量、一个不存在的属性等。

我们可以用赋值运算符(=)来给变量或属性赋值为nullundefined,例如:

js
var a = null; // a有意为“空值” var b; // b无意为“无值”,默认为undefined var c = {}; // c是一个空对象 c.d = undefined; // c.d无意为“无值”,显式赋值为undefined

比较

nullundefined都可以被比较,但是它们有不同的比较规则。

  • nullundefined在相等比较(==)时,会被认为是相等的。这是因为相等比较会进行类型转换,而nullundefined在转换时会被认为是同一种类型。
  • nullundefined在全等比较(===)时,会被认为是不相等的。这是因为全等比较不会进行类型转换,而nullundefined明显是不同类型的值。
  • nullundefined在其他比较运算符(如<, >, <=, >=)时,会被转换为数字。而null会被转换为0,而undefined会被转换为NaN (Not a Number)。由于NaN与任何值都不相等,包括自身,所以任何包含undefined的比较都会返回false

我们可以用比较运算符来比较nullundefined,例如:

js
null == undefined // true null === undefined // false null > undefined // false null < undefined // false null >= undefined // false null <= undefined // false

转换

nullundefined都可以被转换为其他类型的值,但是它们有不同的转换规则。

  • null可以被转换为数字、字符串、布尔值等,而转换的结果分别是0"null"false等。
  • undefined可以被转换为数字、字符串、布尔值等,而转换的结果分别是NaN"undefined"false等。

我们可以用一些内置的函数或运算符来转换nullundefined,例如:

js
Number(null) // 0 Number(undefined) // NaN String(null) // "null" String(undefined) // "undefined" Boolean(null) // false Boolean(undefined) // false +null // 0 +undefined // NaN !null // true !undefined // true

总结

nullundefinedJavaScript中两种特殊的值,它们都表示"没有",但是有不同的含义和用法。

我们需要注意它们的区别,避免出现一些常见的错误或混淆。

本文从定义、类型、赋值、比较、转换等方面,详细介绍了它们的区别和用法。

如果对你有用的话,可以打赏哦
打赏
ali pay
wechat pay

本文作者:CreatorRay

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!