javascript函数交换两个变量

she*_*wen 1 javascript algorithm swap function

function swap(x,y){
  var t=x;
  x=y;
  y=t;
}
Run Code Online (Sandbox Code Playgroud)

这不行.当你swap(a,b),变量ab被复制到功能,在该功能无论发生什么事不会影响真正的价值ab.我想要这样的东西:

 (function(){
 a=1;
 b=2;
 function swap(){//something}
 swap(a,b);
 console.log(a) //2
 console.log(b) //1
 })()
Run Code Online (Sandbox Code Playgroud)

这该怎么做?

Bri*_*sio 8

如果您使用的是最新版本的JavaScript(ES2015),则可以使用名为"destructuring"的新语言功能.你不需要一个功能.它看起来像这样:

let a = 1;
let b = 2;

// swap!
[b, a] = [a, b];
Run Code Online (Sandbox Code Playgroud)

如果你想要一个功能,你可以这样做:

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

[a, b] = swap(a, b);
Run Code Online (Sandbox Code Playgroud)

看看这段代码,我更喜欢这个函数,虽然它有点多余.我喜欢它的表现力.你不会对代码的作用感到困惑.