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

Javascript [b][b=a,0]如何在a和b之间交换?,javascript,Javascript,如前所述, var a = "a"; var b = "b"; a = [b][b = a,0]; 将交换a和b,虽然它看起来有点黑客,但它引发了我的好奇心,我非常好奇它是如何工作的。这对我来说毫无意义 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

如前所述,

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

a = [b][b = a,0];
将交换
a
b
,虽然它看起来有点黑客,但它引发了我的好奇心,我非常好奇它是如何工作的。这对我来说毫无意义

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]
——分配给
a的
[b]
数组=>
b
中的第一个对象

阅读此问题中的@am not I am评论:

这是他的代码…

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


“有点老套”???很多粗俗的…:-)相关:对戈德龙的另一个答案发表评论,并在你最初的问题中要求澄清,难道不是更有意义吗?@FelixKling。我建议他用另一个问题问这个问题。评论不是问答的地方。这不仅仅是对答案的澄清,这是一个完全不同的问题(以我的拙见!),所以当
b
放入数组时,它是安全的?@Derek。当
b=a
a = (function(c) { b = a; return c; })(b);