//基本类型 //指的是两个内存 所以n2还是10 var n1 = 10; var n2 = n1; n1 = 20; console.log(n2); //复杂(引用)类型 function Student(name,age,salary) { this.name = name; this.age = age; this.salary = salary; } //name 等这些属性都是在对象中储存的 s1 s2 指向的是同一个内存地址 所以s2输出的也是"mh" // s2f赋值的时候 没有新开辟一个作用域 var s1 = new Student("za",18,90); var s2 = s1; s1.name = "mh"; console.log(s2.name); //基本类型 和复杂类型作为函数的参数 //基本作为函数的参数 函数内部对参数的修改 不会修改外部的变量 function f1(a) { a = 100; } var x = 1; f1(x); console.log(x);//输出是1 function f2(stu) { stu.name = "zs"; } var s = new Student("jj",18,100); f2(s); console.log(s.name);//输出的是zs
function f2(stu) { stu = new Student(); stu.name = "zs"; } var s = new Student("jj",18,100); f2(s); console.log(s.name);//这时候输出的就不是"zs" 而是"jj"