在阅读前,请先读下面这篇链接文章里的《二、从底层角度讲》,它能让你对JS参数传递的具体机理有一定了解。其实两者差别不大。
也可以看看这篇文章,也不错《可视化分析js的内存分配与回收》
现在开始进入正题
关键点:
- 运算符=就是创建或修改变量在内存中的指向.
- 初始化变量时为创建,重新赋值即为修改.
一、
例1
var a = {b: 1}; // a = {b: 1}
var c = a; // c = {b: 1}
a = 2; // 重新赋值a
console.log(c); // {b: 1}
这段代码在内存中的分布:
然后一步一步执行代码:
(1)创建变量a指向对象{b: 1};
(2)创建变量c指向对象{b: 1};
(3)a重新指向常量区的2;