• 基本数据类型

String Number Boolean Undefined Null

  • 引用数据类型

Object

JS 中的变量都是保存到 栈 内存中的

  • 基本数据类型的值直接在 栈 内存中存储
  • 值与值之间是独立存在,修改一个变量不会影响其它的变量

image.png

JS 中的对象是保存到 堆 内存中的,

  • 每创建一个新的对象,就会在 堆 内存中开辟出一个新的空间
  • 而变量保存的是对象的内存地址(对象的引用)如果两个变量保存的是同一个对象引用
  • 当一个通过一个变量修改属性时,另一个也会受到影响

image.png

当修改一个变量并给它赋值时,则此时 obj 和 obj2 之间的链接断开了,不再属于同一个对象

image.png

当比较两个基本数据类型的值时,比较的是 值

  • 而比较两个引用数据类型时,它是比较的对象的内存地址
  • 如果两个对象一摸一样,但是地址不同,它也会返回 false

image.png

  1. var obj3 = new Object();
  2. obj3.name = "孙悟空";
  3. var obj4 = new Object();
  4. obj4.name = "孙悟空";
  5. // 虽然两个对象的值是一样的,但是指向的内存地址不同
  6. console.log(obj3 == obj4); // false