描述 JavaScript 中的按值传递和按引用传递?
javascriptobject oriented programmingprogramming更新于 2025/8/17 20:28:17
按值传递
在按值传递中,通过直接传递变量的值作为参数来调用函数。更改函数内部的参数不会影响从函数外部传递的变量。Javascript 始终按值传递,因此更改变量的值永远不会更改底层原语(字符串或数字)。
在下面的例子中,变量"a"已分配值 1。但在函数"change"内部,它被分配了值 2。由于 javascript 始终是按值传递,因此显示的输出将是"1"但不是 '2'。
示例
<html>
<body>
<script>
let a = 1;
let change = (val) => {
val = 2
}
change(a);
document.write(a);
</script>
</body>
</html>
输出
1
通过引用传递
有些情况下,传递的是地址而不是参数来调用函数。此时,更改函数内部的值会影响从函数外部传递的变量。这称为通过引用传递。在 javascript 中,大多数数组和对象都遵循通过引用传递。
在下面的例子中,一个名为"a"的对象在函数"change"之外声明。这里应该注意,变量"a"发生了变异,但没有赋值 2,如示例 2 所示。当发生变异时,就会发生通过引用传递。
示例 1
<html>
<body>
<script>
let a = {num:1};
let change = (val) => {
val.num = 2
}
change(a);
document.write(JSON.stringify(a));
</script>
</body>
</html>
输出
{"num":2}
在下面的例子中,变量"a"被赋值,而不是突变。因此发生了按值传递,并且不会对外部变量产生影响。
示例 2
<html>
<body>
<script>
let a = {num : 1};
let change = (val) => {
val = {num :2};
}
change(a);
document.write(JSON.stringify(a));
</script>
</body>
</html>
输出
{"num":1}
相关文章
有用资源
javascript 参考教程 - 该教程包含有关 javascript 的更多信息:https://www.cainiaomax.com/javascript/

