正如gdoron指出的那样,
var a = "a";
var b = "b";
a = [b][b = a,0];
将交换a
和b
,虽然它看起来有点 hacky ,但它引发了我的好奇心,我对它的运作方式非常好奇。这对我没有任何意义。
答案 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
读@am不是我在这个问题上的评论:
When is the comma operator useful?
这是他的代码......
答案 1 :(得分:1)
它可能有助于(或阻碍)将其视为语义上等效的lambda构造的术语(这里,参数c
取代元素0):
a = (function(c) { b = a; return c; })(b);