搬运自B站技术蛋老师视频
全文约
500字,阅读需要约5分钟
临时变量法
上大学时接触到的第一种交换变量的方法,可以想像成桌上有三个瓶子,a瓶装的是可乐,b瓶装的是雪碧,c瓶是一个空瓶,很容易就可以想到a倒入c,b倒入a,c倒入b即可完成交换
let a = 0, b = 1;
let c = a;
a = b;
b = c;
console.log(a, b); // 1 0
加减法
通过数学加减运算来交换变量的值,思想有点类似面试经常碰到的一道经典思维题,问你有一个4L的瓶子,有一个9L的瓶子,如何从一个池塘中取到6L的水,过程如下(单位为L)
0/00/94/50/54/10/11/01/94/6
let a = 0, b = 1;
a = a + b;
b = a - b;
a = a - b;
console.log(a, b); // 1 0
数组法
思路比较简单,通过存取数组实现变量交换
let a = 0, b = 1;
a = [a, b];
b = a[0];
a = a[1];
console.log(a, b); // 1 0
对象法
思想和上一个数组法比较类似,只是将数组换成了对象
let a = 0, b = 1;
a = {a: b, b: a};
b = a.b;
a = a.a;
console.log(a, b); // 1 0
数组运算法
通过运算符优先级实现
先执行b = a
再执行a = [b, 0][0]
let a = 0, b = 1;
a = [b, b = a][0];
console.log(a, b); // 1 0
按位异或法
异或即对应的二进制位相同返回0,不同返回1
let a = 0, b = 1;
a = a ^ b;
b = a ^ b;
a = a ^ b
console.log(a, b); // 1 0
解构赋值法
通过
es6解构赋值语法实现
let a = 0, b = 1;
[a, b] = [b, a];
console.log(a, b); // 1 0
完
更多方法欢迎大佬们评论补充
个人CSS作品项目正在搭建中