[b] [b = a,0]如何在a和b之间交换?

时间:2012-03-25 21:52:17

标签: javascript

正如gdoron指出的那样,

var a = "a";
var b = "b";

a = [b][b = a,0];

将交换ab,虽然它看起来有点 hacky ,但它引发了我的好奇心,我对它的运作方式非常好奇。这对我没有任何意义。

2 个答案:

答案 0 :(得分:7)

var a = "a";
var b = "b";

a = [b][b = a, 0];

让我们把最后一行分成几部分:

[b]       // Puts b in an array - a safe place for the swap.
[b = a]   // Assign a in b
[b = a,0] // Assign a in b and return the later expression - 0 with the comma operator.

所以最后它是a =[b][0] - [b]数组中的第一个对象=> b分配给a

Live DEMO

读@am不是我在这个问题上的评论:
When is the comma operator useful?
这是他的代码......

答案 1 :(得分:1)

它可能有助于(或阻碍)将其视为语义上等效的lambda构造的术语(这里,参数c取代元素0):

a = (function(c) { b = a; return c; })(b);