null和undefined你还分不清?

基本数据类型有哪些?

在介绍null和undefined的区别之前,首先介绍下JS的基本数据类型有哪些?

  • undefined
  • number
  • boolean
  • string
  • bigint
  • symbol
  • null

从上面的基本类型我们可以看出,null和undefined同为基本数据类型,那么下面我们来探讨一下他们之间有什么区别~

undefined

undefined表示的是一个变量最原始的状态值,未定义的状态值,而非人为操作的结果。

应用场景一:没有被赋值的变量

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

应用场景二:对象身上不存在的属性

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

应用场景三:没有被传递参数的形参

// 没有被传递参数的形参
function test(a) {
    
    
    console.log(a);  // undefined
}
test()

null

null表示的是一个变量被人为设置为空对象,而不是原始状态。

应用场景一:将来用于表示对象的变量,初始化为null。

let obj = null;
obj = {name: '哈哈'};

应用场景二:为数据释放引用

解除引用的真正作用是让值脱离执行环境,以便垃圾收集器在下次运行时将其回收。

let obj = null;
obj = {
    
    name: '哈哈'};
obj = null

null和undefined的区别总结

  1. undefined表示的是一个变量自然的、最原始的状态值。
  2. null表示的是一个变量被人为设置为空对象,而不是原始状态。
  3. 保证变量的语义,不要将变量显示赋值为undefined,释放一个对象的时候可以使用null。

问题

RQ:为什么typeof null为object?

在JS中进行数据底层存储的时候使用的是二进制,它的前三位代表的是存储的数据类型,而000代表的是object类型也就是引用类型的数据,null正好是000,所以使用typeof检测的时候会输出object,还有就是null指的是空指针对象,所以返回object,这是JS设计的一个bug。

猜你喜欢

转载自blog.csdn.net/sinat_41696687/article/details/124274304
今日推荐