JavaScript 里 Null 和 Undefined 的区别

本文详细解析了JavaScript中null与undefined的相似性与区别,包括它们的数据类型、转换行为及常见使用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

null 和 undefined 的区别

1.相似性

在JavaScript中,将一个变量赋值为undefined或null,老实说,几乎没区别。

var a = null
var a = undefined

上面代码中,a变量分别被赋值为 undefined 和 null,这两种写法几乎等价。

undefined和null在语句中,都会被自动转为false,相等运算符甚至直接报告两者相等。

console.log(null== undefined) //true
console.log(null ===undefined) //false

由此观察可知:null 和 undefined 两者相等,但是当两者做全等比较时,两者又不等。

2.区别

在这里插入图片描述
null是一个表示"无"的对象,转为数值时为0
典型用法:

  • 作为函数的参数,表示该函数的参数不是对象。

  • 作为对象原型链的终点

undefined是一个表示"无"的原始值,转为数值时为NaN
典型用法:

  • 变量被声明了,但没有赋值时,就等于undefined。

  • 调用函数时,应该提供的参数没有提供,该参数等于undefined。

  • 对象没有赋值的属性,该属性的值为undefined。

  • 函数没有返回值时,默认返回undefined。

3.数据类型

console.log(typeof null )  //object
console.log(typeof undefined)  //undefined

其实,null 有属于自己的类型 Null,而不属于Object类型,typeof 之所以会判定为 Object 类型,是因为JavaScript 数据类型在底层都是以二进制的形式表示的,二进制的前三位为 0 会被 typeof 判断为对象类型,而 null 的二进制位恰好都是 0 ,因此,null 被误判断为 Object 类型。

  • 000 – 对象,数据是对象的应用

  • 1 – 整型,数据是31位带符号整数

  • 010 – 双精度类型,数据是双精度数字

  • 100 – 字符串,数据是字符串

  • 110 – 布尔类型,数据是布尔值

我们可以通过另一种方法获取 数据 的真实类型:

Object.prototype.toString.call(null) // [object Null]
Object.prototype.toString.call(undefined) // [object Undefined]

通过 Object 原型上的toString() 方法可以获取到JavaScript 中对象的真实数据类型

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值