javascript 引用传值
时间: 2023-08-13 14:09:01 浏览: 61
在 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 中的参数传递是按值传递的,但对于对象和数组等引用类型的参数,实际传递的是它们的引用。
相关推荐
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)