例子

1.基本类型:在赋值运算中只传值

number,string,boolean

  1. var a=10;
  2. b=a;
  3. b=20;
  4. console.log(a) //10(值)

第8章 基本类型和引用类型的区别 - 图1

2.引用类型:在赋值运算中既传值也传址

  1. var obj1 = {age:19}
  2. var obj2 = obj1;
  3. obj2.name = "我有名字了";
  4. console.log(obj1.name); // 我有名字了

第8章 基本类型和引用类型的区别 - 图2

  1. var arr=[1,2,3,4];
  2. obj=arr;
  3. obj.push(5);
  4. console.log(arr); //[1,2,3,4,5]

总结

  1. 基本类型的值在内存中占据固定大小的空间,因此被保存在栈内存中。引用类型的值占据两块内存空间。
  2. 引用类型的值是一个对象,它保存在堆内存中。
  3. 包含引用类型的值的变量不是实际对象本身,它是一个指针,指向实际对象。
  4. 在赋值运算中,复制的其实是指针,因此两个变量最终都会指向同一个对象。