先定义两种数据类型组合
1.简单类型:包含数值,boolen,string等
2.复杂类型:包含对象(object),数组等
- 对于给函数传递参数
1为按值传递
2为传递共享引用(与按引用传递不同)
- 对于赋值,拷贝
1为按值传递
2为按引用传递
对于传递共享引用:
以数组为例,
//case1
var a=[1,2,3];
function foo(a){
a.push(4); //调用引用类型方法,改变了形参a,也改变了全局变量a
console.log(a); // [1,2,3,4] 此时的a是形参变量的值
a=[5,6,7]; // 形参重新赋值不会改变全局变量a
console.log(a); // [5,6,7] 形参变量a
};
foo(a);
console.log(a); // [1,2,3,4]
//case2
var a=[1,2,3];
function foo(a){
a=[5,6,7]; // 形参a被重新赋值,不会改变全局a
a.push(4); // 此时只改变了形参a,不会改变全局a
console.log(a); // [5,6,7,4]
};
foo(a);
console.log(a); // [1,2,3]