As gdoron pointed out,
var a = \"a\"; var b = \"b\"; a = [b][b = a,0];
Will swap a and b, and although it looks
a
b
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):
c
a = (function(c) { b = a; return c; })(b);