js中null和undefined的区别

本文详细比较了JavaScript中null和undefined的区别,包括它们的定义、属性、布尔运算表现、在函数参数、对象原型链以及在数值运算中的行为。null被视为缺失的值且不全等于undefined,后者是未定义的变量或属性默认值。

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

一直以来不是很清楚null和undefined的区别,搜索整理了一下

1、定义上

null:指对象的值未设置,是缺失的模块,可以理解为尚未创建的对象。

undefined:表示缺少值,此处应该有个值,但是还没有定义。

2、属性上

null是一个字面量,不是全局对象的一个属性。

undefined是js在运行时创建的全局变量,是全局对象的一个属性。(当我们使用一个没有定义的变量时,全局作用域会自动创建一个名为undefined的变量,初始值为undefined,undefined是在全局作用域中定义的)

3、布尔运算中

undefined和null都被认为是false

4、用法上的区别

null:

作为函数的参数,表示该函数的参数为空

作为对象原型链的终点:Object.prototype.__proto__ === null

undefined:

变量被声明但是没有赋值

对象的某个属性没有赋值

调用函数时所需要的参数没有提供,该参数就等于undefined

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

5、区别

 (1)相等但是不全等: null 和 undefined 都代表着无效的值,所以二者相等,但由于是两种不同的原始数据类型,所以不全等

类型:
typeof undefined    //undefined
typeof null         //object
 typeof null 结果是 object,这是个历史遗留 bug

(2)在数字运算中被转换为number类型的值不同:

null:
//null在进行算术转换时,确定的值为0

	let a = 10 + null;	
	console.log(a);	// 10	
undefined: 
//undefined 得出的结果为 NaN

    let b = 10 + undefined;
	console.log(b);	// NaN

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值