用于交换两个变量的 JavaScript 函数

javascript function to swap two variables

本文关键字:变量 JavaScript 函数 两个 交换 用于      更新时间:2023-09-26
function swap(x,y){
  var t=x;
  x=y;
  y=t;
}

当你swap(a,b)时,变量ab被复制到函数中,无论该函数中发生什么,都不会影响ab的实际值。我想要这样的东西:

 (function(){
 a=1;
 b=2;
 function swap(){//something}
 swap(a,b);
 console.log(a) //2
 console.log(b) //1
 })()

怎么做?

如果您使用的是最新版本的JavaScript(ES2015(,则可以使用称为"解构"的新语言功能。 你不需要函数。 它看起来像这样:

let a = 1;
let b = 2;
// swap!
[b, a] = [a, b];

如果你想要一个函数,你可以这样做:

function swap(a, b) {
  return [b, a]
}
[a, b] = swap(a, b);

查看此代码,我更喜欢该函数,尽管它有点多余。 我喜欢它的表现力。 您不会对代码的作用感到困惑。

你不能。参数是按值传递的,即使在对象的情况下也是如此。只是为它们传递的值是对对象的引用。

基本上,这意味着您收到的任何参数与您传入的原始变量都没有实际联系,除了它们可能共享引用。

想象一下,你在一张纸上写了ab。在 JS 中,与函数共享这些值的唯一方法是将它们复制到另一张纸上并将其交给函数。因此,即使该功能在新纸上划掉a并用b替换它,它也不会改变您在原始纸上写的内容。

简而言之,不可能更改用作函数参数的变量的值。

如上面的答案所述,参数仅按值传递。如果确实需要实现交换,可以使用 2 个变量算法:

var a = 10, b = 20;
a = a + b;
b = a - b;
a = a - b;
console.log (a+" "+b); // 20 10

您可以在函数范围之外设置一个变量,以便您可以在函数内使用它,这是您可以做的事情:

<head>
<script>var x=0, y=1;</script>
</head>
<script>
function swap()
{
  var t = x;
  x = y;
  y = t;
} 
</script>

甚至这有效

<script>
var x=0; y=1;
function swap(id1, id2)
{
  var t = x;
  x = y;
  y = t;
} 
console.log(x+"  "+y);
</script>

我经常使用它并且工作正常。 xy可以从任何地方获取,并且可以在函数内工作没有问题。你也可以做

function(id1, id2)
{
  x=document.getElementById(id1);
  y=document.getElementById(id2);
  var t = x.value;
  x.value = y.value;
  y.value = t;
}
function swap(value) {
    value.first = value.first + value.second;
    value.second = value.first - value.second;
    value.first = value.first - value.second; 
}
// declared an object named value which has two keys - first and second corresponding to the first and the second values respectively
var value = {
    first: 1,
    second: 2
}
console.log(value.first, value.second) // prints 1 2
swap(value);
console.log(value.first, value.second); // prints 2 1