Javascript中为什么会出现引用类型?

108 篇文章 2 订阅
80 篇文章 0 订阅

之前遇到过的一个问题,当时没有说清楚,或者是没有说到点上。看到知乎上的人有人这样回答,get到之前面试官问的点。

作者:请叫我张先森
链接:https://www.zhihu.com/question/306350790/answer/558003629
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

只有值类型,只有引用类型,和两者并存的语言都有,并且都是合理的。JavaScript 只是挑了一种来实现。

首先,基本类型是传值的,引用类型是传址的。在计算机中,有两个概念 堆和栈 , 栈是用来存放 基本数据类型 以及 引用类型的地址;堆是存放数组和对象(就JS 来说) ; 这种存在的原因就是:如果你声明了一个对象

var a = {
 name:"凡高艺术",
 address:"南京"
};

赋值 ,比如 b = a ; 那么按照值传递,是不是得拷贝一份对象(系统得开辟新的内存),然后传给b;如果赋值给N 个变量,你觉得 一个相同的值,拷贝n份,你觉得是不是浪费(因为内存是有限的)修改,比如你b =a ,b.name=“测试”; 此时此刻你只能改变b对象的值,并不能改变a的值,但是大多数情况下,我们都是希望改变b的同时也改变a打一个比方: 你(a)有一栋房子(对象A) ,那么 a = A; 那么你拥有这个房子的钥匙(内存地址);如果有一天你有事情,但是你的朋友(b)想去一趟你家,你肯定是给朋友你的钥匙(而不是 直接把你的房子搬给他) ,这样就相当于 b = a;如果有一天你想请朋友©去帮你打扫一下房子,你也是肯定给你朋友钥匙,去你家,而不是复制一个房子给你朋友,(这样的话,朋友平白无故多了一个房子,多开心,在这个年代房子多重要),这样你朋友打扫的房子才是你的房子综上:

引用类型的存在 的原因如下:
1、节省系统内存(这是最主要的)
2、便于后期管理

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值