区别:赋值语句中的区别
基本数据类型:只传值
var a = 10;
var b = a;
console.log(b);
b = 20;
console.log(a)
引用数据类型既传值也传地址
var obj={name:"lisi"};
var str=obj; //引用类型赋值计算的时候传递的是引用或者说指针
console.log(str);//{name: "lisi"}
str.age=18;
console.log(obj);//{name: "lisi", age: 18}
/*
1.如果生明一个引用数据类型,那么占了两块空间
变量存在栈中
生成的实际对象存在堆中
栈内存中的变量存的是一个引用(指针,地址),指向堆内存中的实际对象
*/
/* 2.发生了赋值运算
实际上是将地址的值给了sum,那么这个指针也是指向了堆内存中的同一个
*/
var arr=[1,2,3];
var sum=arr;
console.log(sum);//[1,2,3]
arr.push(4);
console.log(sum);//[1,2,3,4]