此题提供两种解题方案:1.ES6解构赋值 2.使用异或运算(^)
大家可以将其他方案写在评论区,一起交流学习,不足之处望海涵!
一、方法一:ES6解构赋值法
1、什么是解构赋值?
- 概念
通过解构赋值, 可以将属性/值从对象/数组中取出,赋值给其他变量。 - demo
let a, b, reset;
[a, b] = [10, 20]
console.log(a, b) // 10 20
[a, b, ...reset] = [10, 20, 30, 40]
console.log(a, b, reset) // 10 20 [30, 40]
2、算法实现
let c = 3, d = 4;
[c, d] = [d, c]
console.log(c, d) // 4 3
二、方法二:异或运算(^)
1、什么是异或运算
- 概念
将两个数转化为二进制数,如果对应位相等则为0,不相等则为1 - demo
let a = 3, d = 4;
// 3的二进制为0011,4的二进制为0100
a ^ d = 0011 ^ 0100 = 0111 = 7
2、算法实现
let c = 3, d = 4;
c = c ^ d = 0011 ^ 0100 = 0111
d = c ^ d = 0111 ^ 0100 = 0011
c = c ^ d = 0111 ^ 0011 = 0100
console.log(c, d) // 4 3