在 JavaScript 中,不借助临时变量的情况下,有哪些方法可以交换两个变量的值?请给出相应的代码实现。
考察说明
考查对 JavaScript 基础运算特性(如算术运算、位运算、解构赋值)的掌握程度。
回答思路
- 【回答框架 1】使用加减法交换:设 a、b 为两个变量,执行 a = a + b; b = a - b; a = a - b。原理是利用和与差的关系,但需注意数值溢出风险。
- 【回答框架 2】使用异或运算交换:a = a ^ b; b = a ^ b; a = a ^ b。利用异或的自反性(x ^ y ^ y = x),且仅适用于整数。
- 【回答框架 3】ES6 解构赋值:直接写 [a, b] = [b, a],这是最简洁且推荐的方法,本质上是创建临时数组。
- 【关键点 1】解构赋值是推荐做法,代码简洁且无需考虑溢出。
- 【关键点 2】异或交换仅适用于整数,且不适用于浮点数或进行字符串交换。
- 【关键点 3】加减法交换可能因数值过大导致溢出,应避免用于大整数。
- 【易错点 1】注意异或交换不适用于大数或非整数。
- 【易错点 2】加减法交换可能产生精度问题或溢出。