js 交换a,b的值,不能用临时变量

326 阅读1分钟

两数交换,使用中间变量很简单,但是不使用中间变量呢?

let a = 9
let b = 6

第一种:巧妙利用加法。只能交换数字

a = a + b // 15
b = a - b // 15 - 6 = 9
a = a - b  // 15 - 9 = 6

第二种: 异或(^)即两数不同为1,相同为0。只能交换数字

a = a ^ b   // 00001001 ^ 00000110 = 00001111
b = a ^ b   // 00001111 ^ 00000110 = 00001001
a = a ^ b   // 00001111 ^ 00001001 = 00000110

第三种:ES6的解构赋值。可用于任意数据类型的交换

// 以 () [] / + - 开头的代码需要在前面在分号。
;[b, a] = [a, b]