小问题 关于——javascript 传值和传址

javascript中数组、对象和函数是传址的
权威指南上有这样的例子
[code="java"]var a=[0,1,2];
var b=a;
a[0]=44;
alert(b);[/code]这样b就显示为44,1,2 很明显这说明了数组是传址的
但是我将它改成
[code="java"]var a=[0,1,2]
var b=a;
a=[4,5,6]
alert(b);[/code]
这样的结果b仍为 0,1,2
[color=red]这种情况该怎么解释呢 [/color]

[code="java"]
var a=[0,1,2];

var b=a;

a[0]=44;

alert(b);
[/code]
a和b指向同一个数组,当a的内容改变时,b的内容也改变,即传址。

[code="java"]var a=[0,1,2]

var b=a; // a和b指向同一个数组
a=[4,5,6] // a指向另一个数组了,并没有改变b指向的那个数组
alert(b); [/code]

楼上说得没错

可以这么理解

最初是传值.
同一个对象.两个变量.
1 第一次 你修改的是对象的属性.

2 你第三行的代码可以理解为变成了重新实例化了一个a.
b依然用当初的对象. 但a被重新实例化了.