•
阅读 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