为啥要分为这两种类型?
个人理解,按访问的方式分。
基本类型是传递值的(复制)
引用类型是传递引用的(不复制)
目的当然是兼具快的同时节约内存。小的就复制下,大的就别复制了。
哪些按值?哪些按引用?
按值的如
var a,b;
a = "zyj";
b = a;
console.log(a); // zyj
console.log(b); // zyj
a = "呵呵"; // 改变 a 的值,并不影响 b 的值
console.log(a); // 呵呵
console.log(b); // zyj
如上例子,是把a的值给了b,但并不是把a给了b。有点拗口,自己理解。
按引用传递例子
var a=['zyj']
var b;
b=a;
console.log(a[0]) // zyj
console.log(b[0] // zyj
a[0]='hehe' // 改变 a 的值,影响 b 的值
console.log(a[0]) // hehe
console.log(b[0]) // hehe
对比这个是把引用给了b
总结
来个比喻,你把ipad送人家了。以后你自己再怎么变化也影响不了ipad。如果是ipad还是你家,让那个人来你家随时玩。那么你要把ipad弄变化了,别人也会受到影响。
很自然的事情~
参考
JavaScript 深入了解基本类型和引用类型的值 - percy507的blog - SegmentFault
JavaScript 深入了解基本类型和引用类型的值 - percy507的blog - SegmentFault