分享

为什么js中swap(a, b)交换变量值会失败呢?

 融水公子 2023-07-18 发布于福建
表白:黑白圣堂血天使,天剑鬼刀阿修罗。 
讲解对象:
/为什么js中swap(a, b)交换变量值会失败呢?
作者:融水公子 rsgz
===

第一次编辑的这个函数并没有交换变量成功 原因在哪里 分析一下
function swap(a, b) {
  const temp = a;
  a = b;
  b = temp;
  return a,b // 或者 return (a,b)
}
console.log(swap(2, 3))

这个函数不能成功交换变量的值是因为 JavaScript 中的参数传递方式是按值传递(pass by value),而不是按引传递(pass by reference)。

在函数中,你将变量 a 和 b 作为参数传递给 swap 函数时,实际上是将它们的值复制到了函数的局变量 a 和 b 中。在函数内部对 a 和 b 的修改不会影响到原始变量。

所以尽管在函数内部进行了交换操作,是函数返回后,原始的变量 a 和 b 的值并没有生改变


那么而我们改进一下就可以了
function swap(a, b) {
  const temp = a;
  a = b;
  b = temp;
  return [a, b];
}
console.log(swap(2, 3)); // 输出 [3, 2]

=== 
公众号:不浪仙人
谢谢大家的支持!可以点击我的头像,进入我的空间浏览更多文章呢。建议大家360doc[www.360doc.com]注册一个账号登录,里面真的有很多优秀的文章,欢迎大家的到来。
---
';

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多