在赋值运算中,基本类型只传值,引用类型既传值也传址
例子
1.基本类型:在赋值运算中只传值
number,string,boolean
var a=10;
b=a;
b=20;
console.log(a) //10(值)
2.引用类型:在赋值运算中既传值也传址
var obj1 = {age:19}
var obj2 = obj1;
obj2.name = "我有名字了";
console.log(obj1.name); // 我有名字了
var arr=[1,2,3,4];
obj=arr;
obj.push(5);
console.log(arr); //[1,2,3,4,5]
总结
- 基本类型的值在内存中占据固定大小的空间,因此被保存在栈内存中。引用类型的值占据两块内存空间。
- 引用类型的值是一个对象,它保存在堆内存中。
- 包含引用类型的值的变量不是实际对象本身,它是一个指针,指向实际对象。
- 在赋值运算中,复制的其实是指针,因此两个变量最终都会指向同一个对象。