基本类型和引用类型区别问题

基本类型和引用类型区别问题

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
	</head>
	<body>
		<script type="text/javascript">
			//基本类型    不可替换
			var num="";
			console.log(num);
			var num="123";
			console.log(num);
			
			//引用类型
			var persen = {}
			console.log(persen)
			persen.name="Arai";
			persen.sex = "男";
			persen.hobby = "编程";
			console.log(persen);
			
		</script>
		
	</body>
</html>

老师在课程上讲  基本类型不可替换的 ,引用类型可以增加增加数据,但我这个实验基本类型是num是空的然后num变量的值改了3,引用类型最前面的persen也是空的,后面加了数据而已。  我看两个没有什么区别啊 。怎么理解? 有点混淆。

正在回答

登陆购买课程后可参与讨论,去登陆

2回答

同学你好,关于同学的问题回答如下:

1、不是的,person这个变量名在栈内存中存储,也是有地址的:

http://img1.sycdn.imooc.com//climg/5e5628fd098f87bd10630328.jpg

这个变量名指向这个对象的地址空间。

2、同学说的把persen 变量名改成其他的变量名是这样吗:

http://img1.sycdn.imooc.com//climg/5e5629e7098cf85404550136.jpg

这样的话,persen把自己在堆内存中的引用地址赋值给了person,这两个变量指向同一个堆内存:

http://img1.sycdn.imooc.com//climg/5e562b0c0946afcb10760382.jpg

在控制台打印,两个对象是相等的:

http://img1.sycdn.imooc.com//climg/5e562b4209b56b1805090155.jpg

http://img1.sycdn.imooc.com//climg/5e562b4b09ed98ed09000075.jpg

同学只要 记住复杂数据类型在赋值的时候复制的是地址就可以了,指向同一片堆空间。

如果我的回答帮助了你,欢迎采纳,祝学习愉快~

好帮手慕粉 2020-02-26 11:57:53

同学你好,基本类型是不可替换的,同学赋值的num为3是又重新开辟了个空间,跟之前的num没有关系。老师给同学画个图同学可以看一下:

http://img1.sycdn.imooc.com//climg/5e55ea8c0944e1fd11960443.jpg

如果我的回答帮助了你,欢迎采纳,祝学习愉快~

  • 提问者 雨滴007 #1
    理解了百分之70,但还有点小问题问一下:那引用类型指的地址是基本类型开辟的变量名var persen 吗 ? 我把var persen 变量名需改成 其他的变量名话有什么变化?
    2020-02-26 12:11:39
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
2.组件化网页开发
  • 参与学习           人
  • 提交作业       1121    份
  • 解答问题       14456    个

本阶段在运用JS实现动态网页开发的基础上,带你深入理解企业开发核心思想,完成一个企业级网页的开发,体验前端工程师的成就感。

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师