区别:赋值语句中的区别
基本数据类型:只传值
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]
