Login
网站首页 > 文章中心 > 其它

js中值引用和地址引用实例分析

作者:小编 更新时间:2023-09-04 18:47:58 浏览量:4人看过

JS中的值引用和地址引用指的是,在JS中,非基本类型数据(如对象、数组等)的赋值方式存在两种:值传递和引用传递.当使用值传递时,实际上是将变量的值(即数据内容)直接复制给接收变量;而当使用引用传递时,则是将变量的地址(指针)复制给接收变量,两者指向同一块内存空间,从而共享同一份数据.这里通过两个实例来详细讲解这两种传递方式的异同点.

实例1:值传递

假设有两个对象a和b,对象a包含一个属性name,如下所示:

const a = {name: 'Tom'}


当我们将对象a的值赋给变量b时,是将a中的数据内容直接复制一份(副本)给b,两个变量之间不再有任何联系:

const b = a;

这时,如果我们改变a对象的name属性:

a.name = 'Jerry';

那么b对象的name属性并没有发生改变:

console.log(b.name); // Tom

这个实例中,变量b并没有和变量a共享同一份数据,而是得到了a对象的值的一份副本,所以呢改变a并不会影响到b.

实例2:引用传递

假设我们定义了一个数组a:

const a = [1, 2, 3];

而我们将这个数组a赋值给另一个数组变量b:

const b = a;

这时候,变量a和b指向同一个数组对象,即它们引用了同一块内存空间,所以呢对于数组中的元素的修改,变量a和b都会受到影响.

例如我们修改了数组a中第一个元素的值:

a[0] = 100;

那么数组b中的第一个元素也会跟着修改:

console.log(b[0]); // 100

这也是JS中引用传递的特点之一:多个变量引用同一个对象,会共享同一块内存空间.

综合上面所讲的,JS中的值引用和地址引用实际上是指JS中赋值方式存在的两种传递机制:值传递和引用传递.其中,值传递是直接将变量的数据内容复制给接收变量,两者之间不会共享同一份数据;而引用传递则是将变量的地址复制给接收变量,两者指向同一块内存空间,所以呢共享同一份数据.

以上就是土嘎嘎小编为大家整理的js中值引用和地址引用实例分析相关主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!

版权声明:倡导尊重与保护知识产权。未经许可,任何人不得复制、转载、或以其他方式使用本站《原创》内容,违者将追究其法律责任。本站文章内容,部分图片来源于网络,如有侵权,请联系我们修改或者删除处理。

编辑推荐

热门文章