JavaScript数据类型学习

96 阅读2分钟

原始数据类型

  • 原始数据类型包括:Number、String、Boolean、null、undefined、symbol、BigInt
  • 特性:
  • 1)基本数据类型的值是不可变
  • 2)基本数据类型不可以添加属性和方法
  • 3)基本数据类型的赋值是简单赋值
  • 4)基本数据类型的比较是值的比较
  • 5)基本数据类型是存放在栈区

引用数据类型

  • 引用数据类型:JavaScript中除了基本数据类型外就是引用数据类型了(也可以说是对象)。比如:Object、Array、Function、Data等。特性:
  • 1)引用类型的值是可以改变
  • 2)引用类型可以添加属性和方法
  • 3)引用类型的赋值是对象引用
  • 4)引用类型的比较是引用的比较
  • 5)引用类型是同时保存在栈区和堆区中

区别:

  • 1)、声明变量时内存分配不同
  • 原始类型:在栈中,因为占据空间是固定的,可以将他们存在较小的内存中-栈中,这样便于迅速查询变量的值
  • 引用类型:存在堆中,栈中存储的变量,只是用来查找堆中的引用地址。
  • 2)、访问机制不同
  • 在javascript中是不允许直接访问保存在堆内存中的对象的,所以在访问一个对象时,首先得到的是这个对象在堆内存中的地址,然后再按照这个地址去获得这个对象中的值,这就是按引用访问。
  • 而原始类型的值则是可以直接访问到的。
  • 3)、复制变量时的不同
  • 原始值:在将一个保存着原始值的变量复制给另一个变量时,会将原始值的副本赋值给新变量,此后这两个变量是完全独立的,他们只是拥有相同的value而已。
  • 引用值:在将一个保存着对象内存地址的变量复制给另一个变量时,会把这个内存地址赋值给新变量,也就是说这两个变量都指向了堆内存中的同一个对象,他们中任何一个作出的改变都会反映在另一个身上。
null 和 undefined 区别
  • 简单点理解: undefined表示值不存在,null表示值存在但是为空,没有意义
null == undefined // true
null === undefined // fasle
// typeof null 为 Object, typeof undefined 为 undefined
  • null: 作为对象原型链的终点
  • 以下几种情况均为undefined
  • 1)当定义一个变量没赋值。
  • 2)当调用一个对象还没添加的属性时候。
  • 3)当调用一个没有返回值的函数时。
栗子🌰:
let a; // undefined
let b = {};
b.name; // undefined
function c() {};
let d = c(); // undefined