
|  |      1akfish      2014-05-01 19:17:58 +08:00 一句话,不能。 js没有pass by reference,只有pass by value。 你可以pass一个object,然后function修改object的内容,但实际上你依然是pass了这个object的引用的value而已。 var obj = {a: 1, b: 2}; function swap(obj) { var tmp = obj.a; obj.a = obj.b; obj.b = tmp; return obj; } swap(obj); | 
|  |      2ch3x      2014-05-01 19:32:45 +08:00 ES6 可以像 Python 一样做交换。 `[x, y] = [y, x];` | 
|  |      3x6doooo      2014-05-01 20:23:12 +08:00  1 a = [b, b = a][0] | 
|      4jsonline      2014-05-01 20:29:07 +08:00 via Android 加一个中间量会死么 | 
|      5jsonline      2014-05-01 20:30:18 +08:00 via Android 还有啊,为什么要交互两个变量的值,怎么会有这种场景 | 
|      6jsonline      2014-05-01 20:31:59 +08:00 via Android JS也无法返回多个值。。。 看来JS需要改进的地方真不少 | 
|  |      7Ever      2014-05-01 20:47:50 +08:00 用eval就可以, 不过一是难看, 二是涉及scope层次多易起副作用, 得不偿失. | 
|  |      8ljcarsenal      2014-05-01 21:48:06 +08:00 不用var 声明,定义成全局变量。 | 
|  |      9tangzx      2014-05-01 22:02:21 +08:00 via iPhone var a=1;var b=2;var swap=function(v1, v2, cb){_.defer(function(){cb(v2, v1);});};swap(a, b, function(a, b){console.log("swapped: " + a + ", " + b);}); | 
|  |      11Mutoo      2014-05-01 22:45:45 +08:00 function swap(a, b){ var tmp = this[a]; this[a] = this[b]; this[b] = tmp; } n = 1; m = 2; swap.call(this,"n","m"); console.log([n,m]); // [2, 1] |