前端/移动开发面试题更新 2026-08-05

在 JavaScript 中,不借助临时变量的情况下,有哪些方法可以交换两个变量的值?请给出相应的代码实现。

前端/移动开发编码实现技术原理JavaScript

考察说明

考查对 JavaScript 基础运算特性(如算术运算、位运算、解构赋值)的掌握程度。

回答思路

  1. 【回答框架 1】使用加减法交换:设 a、b 为两个变量,执行 a = a + b; b = a - b; a = a - b。原理是利用和与差的关系,但需注意数值溢出风险。
  2. 【回答框架 2】使用异或运算交换:a = a ^ b; b = a ^ b; a = a ^ b。利用异或的自反性(x ^ y ^ y = x),且仅适用于整数。
  3. 【回答框架 3】ES6 解构赋值:直接写 [a, b] = [b, a],这是最简洁且推荐的方法,本质上是创建临时数组。
  4. 【关键点 1】解构赋值是推荐做法,代码简洁且无需考虑溢出。
  5. 【关键点 2】异或交换仅适用于整数,且不适用于浮点数或进行字符串交换。
  6. 【关键点 3】加减法交换可能因数值过大导致溢出,应避免用于大整数。
  7. 【易错点 1】注意异或交换不适用于大数或非整数。
  8. 【易错点 2】加减法交换可能产生精度问题或溢出。