//js两变量交换总结
var v1=-1,v2=-2;
//方式一:传统方式借助第3个变量
var a1 = v1,b1 = v2,temp;
temp = a1;
a1 = b1;
b1 = temp;
console.log(a1, b1);
//方式二:利用位运算的异或
var a2 = v1,b2 = v2;
a2 = a2 ^ b2;
b2 = a2 ^ b2;
a2 = a2 ^ b2;
console.log(a2, b2);
//方式三:利用加法
var a3=v1,b3=v2;
a3=a3+b3;
b3=a3-b3;
a3=a3-b3;
console.log(a3,b3);
//方式四:利用减法
var a4=v1,b4=v2;
a4=b4-a4;//差
b4=b4-a4;//第2个数减去差得第一个数赋值给第二数交换
a4=a4+b4;
console.log(a4,b4);
//方式五:解构赋值
var a5=v1,b5=v2;
[a5,b5]=[b5,a5]
console.log(a5,b5);
//方式六:数组赋值与取值
var a6=v1,b6=v2;
a6=[b6,b6=a6][0];
console.log(a6,b6);
//方式七:赋值与自左向右运算
var a7=v1,b7=v2;
a7=b7+(b7=a7)*0;
console.log(a7,b7);
//方式八:逗号运算符,没有实际价值,纯属方式不同凑数
var a8=v1,b8=v2,temp;
a8=(temp=b8,b8=a8,temp);
console.log(a8,b8);
//方式九:刚从网上看到的,补充一个:思路:把a先变成了一个对象这个对象保存着应该交换后的键值对最后赋值搞定
a = {a:b,b:a};
b = a.b;
a = a.a;
//方式十:和上面的方法很像,只不过对象换成了数组
a = [a,b];
b = a[0];
a = a[1];
这是本人能想到的,有不同解法的或有不当之处敬请指正,谢谢!