1、概述
简单值(基本类型)通过值复制的方式来赋值/传递。
复合值(对象)通过引用复制的方式来赋值/传递。
<!DOCTYPE html><html lang="zh"> ???<head> ???????<meta charset="UTF-8" /> ???????<title>值和引用</title> ???</head> ???<body> ???????<script type="text/javascript"> ???????????var a = 2; ???????????var b = a; ???????????b++; ???????????//2是基本类型(位于常量池),a是该值的一个副本,b是另外一个副本,b改变时不影响a ???????????console.log(a); //2 ???????????console.log(b); //3 ???????????var c = [1, 2, 3]; ???????????var d = c; ???????????d.push(4); ???????????//c和d都是执行数组(位于堆中)的2个不同引用。他们更改的是同一个值。 ???????????console.log(c); //[1,2,3,4] ???????????console.log(d); //[1,2,3,4] ???????</script> ???</body></html>
结合内存示意图,理解会更深刻。
简单类型的值在常量池只有一份,变量a和变量b都是常量池中2的一个副本。
变量c和变量d都是指向堆中的一个住数组。
js 值和引用
原文地址:https://www.cnblogs.com/mengfangui/p/8297468.html