As gdoron pointed out,
var a = \"a\";
var b = \"b\";
a = [b][b = a,0];
Will swap a
and b
, and although it looks
var a = "a";
var b = "b";
a = [b][b = a, 0];
Let's break the last line into pieces:
[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.
so finally it is a =[b][0]
- the first object in the [b]
array => b
assigned to a
Live DEMO
read @am not I am comments in this question:
When is the comma operator useful?
It's his code...
It might help (or hinder) to think of it terms of the semantically equivalent lambda construction (here, parameter c
takes the place of element 0):
a = (function(c) { b = a; return c; })(b);