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);