先定义两种数据类型组合

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]