JavaScript 中null和undefined的区别

JavaScript 中的基本数据类型包括:StringNumberBooleannullundefinedBigInt,其中nullundefined都表示“无”这层含义,一般情况下,两者几乎没有区别。

1. 相似之处

在全局定义两个变量,一个是null,另一个是undefined,最终他们都被挂载到全局对象上了,且值都为undefined

var a = null;
var b = undefined;

console.log(global.a, global.b); // undefined undefined

这说明,null不是全局对象的一个属性。

另外,在if语句中,nullundefined都会被认为是false

var a = null;
var b = undefined;

if (!a) {
    console.log(a); // null
}

if (!b) {
    console.log(b); // undefined
}

也就是说,在具有类型转换的场景中,nullundefined都会被转化为false

console.log(!!null); // false
console.log(!!undefined); // false

如下代码,用==判断nullundefined,结果为true,这是因为它们都被转化为了布尔值的false。而使用===判断时,由于它们属于不同的数据类型,则直接会返回false

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

2. 不同点

1. null

null表示一个值被定义了,但定义的是空值

以下是null的经典用法。

(1)作为函数的参数,表示不传入此参数。

const test = (a, b) => {
    console.log(b);
};

test(null, 2); // 2

(2)作为原型链的终点。

console.log(Object.prototype.__proto__); // null

2. undefined

undefined表示根本不存在定义

以下是undefined的经典用法。

(1)变量被声明,但还没有赋值,此时的变量等于undefined

let a;
console.log(a); // undefined

(2)调用函数时,应该传入的参数未传入,则该参数为undefined

const test = a => {
    console.log(a);
};

test(); // undefined

(3)对象没有定义的属性,该属性为undefined

const obj = {};

console.log(obj.a); // undefined

// 注意,在未定义的属性上,继续读取属性会报错
console.log(obj.a.b); // TypeError: Cannot read property 'b' of undefined

(4)不在数组索引范围的值,为undefined

const arr = [1];

console.log(arr[100]); // undefined

(5)函数没有返回值时,默认返回的是undefined

const test = () => {};

console.log(test()); // undefined

以上是本人学习所得之拙见,若有不妥,欢迎指出交流!


📘📘欢迎在我的博客上访问:
https://lzxjack.top/

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

火星飞鸟

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值