简单数据&复杂数据的区别

简单数据类型:

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也会受到同样的更改

故结果为丸子

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值