不使用临时变量,如何赋值替换a=b?

我们知道,一般将两个变量进行交换,可以声明一个临时变量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 = 3b = a - b; // a = 5, b = 2a = 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 = 2a = a[1]; // a = 3

三,对象交换​​​​​​​

var a = 2,    b = 3;    a = {a:a, b:b}; // a = {a:2, b:3}b = a.a; // b = 2a = a.b; // a = 3

该方法与数组转换的道理相似。

四,ES6解构语法​​​​​​​

let a = 2,    b = 3;[a,b] = [b,a]

此种方法最简单明了,推荐使用。

猜你喜欢

转载自blog.csdn.net/weixin_49707375/article/details/128221050