我们知道,一般将两个变量进行交换,可以声明一个临时变量tmp,进行数据交换过程中的缓存,如下:
var a=2,
b=3;
var tmp;
tmp = a;
a = b;
b = tmp;
这样的做法直观,易懂,但是会增加内存的使用。
那有没有办法不使用临时变量,让a与b的值交换呢?
其实也是有的,而且方法还不止一种~
一,算数运算
var a = 2,
b = 3;
a = a + b; // a = 5, b = 3
b = a - b; // a = 5, b = 2
a = a - b; // a = 3, b = 2
让a充当一个变量的角色,可以巧妙的将两个值进行互换。
但是,有个缺点就是变量数据溢出,如果a+b超出a,就会出错,所以这种方法不是很推荐应用到实际开发中。
二,数组交换
利用数组特性进行交换
var a = 2,
b = 3;
a = [a,b]; // a = [2,3]
b = a[0]; // b = 2
a = a[1]; // a = 3
三,对象交换
var a = 2,
b = 3;
a = {a:a, b:b}; // a = {a:2, b:3}
b = a.a; // b = 2
a = a.b; // a = 3
该方法与数组转换的道理相似。
四,ES6解构语法
let a = 2,
b = 3;
[a,b] = [b,a]
此种方法最简单明了,推荐使用。