简单数据类型:
string \ number \ boolean \ undefined \ null
复杂数据类型:
object \ function \ array
内存分为 栈(存放简单数据类型)和堆(存放复杂数据类型)
注意:JavaScript中没有堆和栈的概念,此处我们用堆和栈目的是方便理解和学习。
简单数据类型传参
// 简单数据类型传参
function fn(a) {
a++;
console.log(a); // 11
}
var x = 10;
fn(x);
console.log(x); // 10
分析:
调用函数fn(x)因为x = 10故等于fn(10) 执行函数结果为11
底下输出的x不变依旧是10
复杂数据类型传参
let obj1 = {name : '常威',age : 20};
let obj2 = obj1;
obj2.name = '来福';
obj2.age = 22;
console.log(obj1);//输出结果:{name: "来福", age: 22}
————————————————
版权声明:本文为CSDN博主「无问I西东」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/m0_46432330/article/details/104576055
分析:
第二行让obj2 = obj1 ==》obj2和obj1在栈里共用一个地址,指向了堆里的同一个值,所以obj2更改了数据,会影响obj1的输出
分析:在执行函数f1时 因为形参x此刻值为p
所以p所构造的对象中的name为团团
而在执行函数的第7行将name赋值为丸子
所以第8行输出时为丸子
因为共用了一个堆里的变量库 所以在f1函数里更改了以后p也会受到同样的更改
故结果为丸子