两个变量的值互换在面试中也会经常出现,如果可以说出多种方法,也会让面试官眼前一亮,今天小shy就给大家介绍几种方法,看看哪种更适合你。
1. 临时变量法
let a = 3, b = 5, c = b; // c: 5
b = a; // b: 3
a = c; // a: 5
2. 加减法
let a = 3, b = 5;
a = a + b; // a: 8
b = a - b; // 8 - 5 = 3
a = a - b; // 8 - 3 = 5
3. 数组法
let a = 3, b = 5;
a = [a, b]; // a: [3, 5]
b = a[0]; // 3
a = a[1]; // 5
4. 对象法
let a = 3, b = 5;
a = {
a,
b
}; // a: {a: 3, b: 5}
b = a.a; // 3
a = a.b; // 5
5. 数组运算法
我比较喜欢的一种:
let a = 3, b = 5;
a = [b, b = a][0];
// a = [5, b = 3][0]
// a = 5, b = 3
6. 解构赋值
let a = 3, b = 5;
[a, b] = [b, a];
// a: 5 b: 3
7. 按位异或
let a = 3, b = 5;
a ^= b;
b ^= a;
a ^= b;
// a: 5 b: 3
异或(^)的特点:
异或是用二进制数进行运算的,特点是只在一位上是 1 的时候返回 1,即两位都是 1 或 0,则返回 0(如果想详细了解位操作符可以去看小shy之前对位操作符的讲解的博客 JS位操作符详解)。
a的二进制:0011
b的二进制:0101
a ^= b的结果: a = 0110
0011
0101
————
0110
b ^= a的结果是:b = 0011 就是3的二进制数
0101
0110
————
0011
a ^= b的结果是:a = 0101 就是5的二进制
0110
0011
————
0101
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。