javascript的拷贝传值和引用传值

一 拷贝传值:基本数据类型都是“拷贝传值”。
1.1 拷贝传值,就是将一个变量的值“拷贝”一份,传给了另一个变量。
1.2 拷贝传值中,两个变量之间没有任何联系,修改其中一个变量的值,另一个不会改变。
1.3 这两个变量之间,是相互独立的,没有任何联系。
基本数据类型存在“快速内存”“栈内存”中的。因为,基本数据类型只有一个变量名和一个变量值。
在这里插入图片描述
二 引用传址:复合数据类型都是“引用传地址”
复合数据类型的存储分两步:
(1)将变量名和数据地址存在“快速内存”“栈内存”中。
(2)具体的数据存在“慢速内存”“堆内存”中。

引用传址:将一个变量的数据地址,“拷贝”一份,传给另了另一个变量。这两个变量,指向“同一个地址”。
大家共享同一份数据。
如果其中一个变量的值发生了改变,那么,另一个变量的值也得变。要变一起变。
因此,这两个变量是有联系的,要变大家一起变。
在这里插入图片描述

JavaScript 中,函数参数是按传递的,而不是按引用传递的。这意味着在函数内部修改参数的不会影响到函数外部的原始。但是,当参数是对象或数组时,传递的是对象或数组的引用,因此在函数内部修改对象或数组的属性会影响到函数外部的原始对象或数组。 例如,考虑以下代码: ``` function changeValue(x) { x = 2; } let a = 1; changeValue(a); console.log(a); // 输出 1 ``` 在这个例子中,我们定义了一个函数 `changeValue`,它接受一个参数 `x`。当我们调用 `changeValue(a)` 时,函数内部的 `x` 变量被赋为 `2`。然而,由于函数参数是按传递的,它并不会影响到外部的 `a` 变量,所以 `console.log(a)` 输出的是 `1`。 现在,让我们考虑一个对象的例子: ``` function changeProperty(obj) { obj.prop = 'new value'; } let myObj = { prop: 'old value' }; changeProperty(myObj); console.log(myObj.prop); // 输出 'new value' ``` 在这个例子中,我们定义了一个函数 `changeProperty`,它接受一个对象参数 `obj`。当我们调用 `changeProperty(myObj)` 时,函数内部修改了 `obj` 的 `prop` 属性的为 `'new value'`。由于 JavaScript 中对象是按引用传递的,这个修改也会影响到外部的 `myObj` 对象,所以 `console.log(myObj.prop)` 输出的是 `'new value'`。 总的来说,JavaScript 中的参数传递是按传递的,但对于对象和数组等引用类型的参数,实际传递的是它们的引用
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值