•
阅读 3 分钟
在 JavaScript 中需要知晓的交换两个变量值
交换两个变量值通常必须一个中间变量或者 XOR swap algorithm 如同例子 #2。我们将学习 JavaScript 中交换两个变量的两类状况和五种方法。
- 如果变量类型是
number,例子 #2 和 #3 是有效的。 - 如果变量的类型是任意类型比如
string,number,object,array等,剩余的其它方法有效。
让我们了解 JavaScript 中交换变量的这五种不同的方法,这里是第一种。
使用中间变量
let x = 10
let y = 20
const tmp = x
x = y
y = tmp
// x = 20
// y = 10
上面的方法可以用于交换任意类型的两个变量。
在上面的例子中,我们创建一个变量 tmp 来接受 x 的值,接着赋值 y 给 x,然后赋值 tmp 给 x。
不使用中间变量交换变量值
使用按位 XOR 运算符交换
let x = 10
let y = 20
x ^= y
y ^= x
x ^= y
// x = 20
// y = 10
想要更彻底理解这个代码请阅读 wiki XOR swap algorithm
JavaScript 的按位 xor 运算符转换它的操作数为 32 位整数(使用
ToInt32的方法—了解 ECMAScript 标准的章节 11.10。对于非整数数值,它不会产生正确的结果。还将非数字值转换为 32 位整数。 如果以x="hi"和y="there"开头,则最终以x == 0和y == 0结束。
仅仅对于数值有效
let x = 10
let y = 20
x = x + y
y = x - y
x = x - y
// x = 20
// y = 10
上面的例子仅仅对于类型是 number 的变量有效。所以确定你使用的类型。
单行交换
在这里我将向你展示可以在单行交换任意类型的变量的一对方法。
使用数组
let x = 10
let y = 20
y = [x, (x = y)][0]
// x = 20
// y = 10
首先使用数组,它将 x 的值保留在该数组的 0 位置,然后将 y 的值赋给该数组第二个位置的 x,然后表达式将数组 0 的值赋给 y,即 实际上是 x。
使用解构表达式
这是我最喜欢的方法,使用解构表达式简洁且可读地交换两个变量的方法,参阅下面的例子:
let x = 10
let y = 20
;[x, y] = [y, x]
console.log(x) // 20
console.log(y) // 10
但是小心这仅在 ES6 及以上提供支持。
本文由 吳文俊 翻译,原文地址 all you need to know about swapping two variables in javascript
标签: javascript