输出还是 [1,2,3] 是怎么回事
let arr = [1,2,3];
change(arr);
console.log(arr); // [1,2,3]
function change (arr){
arr = [];
}
输出还是 [1,2,3] 是怎么回事
let arr = [1,2,3];
change(arr);
console.log(arr); // [1,2,3]
function change (arr){
arr = [];
}
举例说明吧
var a = [1,2,3]; //a中存储的是数组的引用地址,这个数组我起名叫“数组1”
var b = a; // a赋值给b,b中也存储了“数组1”的引用地址
b[1] = 4; // 对 b[1] 赋值并不是直接改变b中存储的内容,而是读取b中存储的引用地址,通过这个引用地址找到“数组1”,再对“数组1”的[1]属性进行赋值。
//这样对b本身而言只是读取操作,b中存储的内容没有改变,依然与a中存储的引用地址一样。
//同样的
b.push(5); // 也是先读取b中存储的引用地址,通过这个引用地址找到“数组1”,再调用“数组1”的push方法对“数组1”中的属性添加。
//这样对b本身而言也只是读取操作,b中存储的内容没有改变,依然与a中存储的引用地址一样。
//但下面就不同了
b = [7,8,9]; //将一个新的数组赋值给b,这个新的数组我起名叫“数组2”
// 这回对b本身而言就是写入操作了,b中存储的内容变成“数组2”的引用地址。
// 但是a中存储的引用地址没有变,还是原来存储的“数组1”的引用地址。
// 这样a和b的关联就断开了。