共有四种方法。
1. 使用中间变量t(这是最基础的一种方法)
var t
t = a //a=1,t=1,b=2
a = b //a=2,t=1,b=2
b = t //a=2,t=1,b=1
2. 使用ES6的解构赋值
[a, b] = [b, a]
结构赋值适用于字符串、数字、布尔值和对象等,语句简短。对于大多数情况都可以优先使用这种方式。
3. 加减法
这种方法不需要使用额外的内存,因为他没有用到其他的临时变量或者是临时数组。
let a = 1;
let b = 2;
a = a + b; // a=3,b=2
b = a - b; //a=3,b=1
a = a - b; //a=2,b=1
这种方法虽然灵活,但是也有很大的局限。
1.只能是整数
2.在第一步a=a+b
时要注意数字溢出(总和必须小于Number.MAX_SAFE_INTEGER)。
4. 按位XOR运算符(异或^)
这是XOR真值表。
a | b | a ^ b |
---|---|---|
0 | 0 | 0 |
1 | 1 | 0 |
0 | 1 | 1 |
1 | 0 | 1 |
那么使用这个我们如何交换a、b的值呢?
let a = 1; //a为001
let b = 2; //b为010
a=a^b; //001^010,a为011
b=a^b; //011^010,b为001
a=a^b; //011^001,a为010
a; //2
b; //1
按位XOR运算符只能交换整数。