【拿下算法】:不借助临时变量,交换两个整数的值

此题提供两种解题方案: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
原文地址:https://www.cnblogs.com/huiwenhua/p/13578821.html