通过数组解构交换变量是否有效?

Tho*_*son 5 processing-efficiency ecmascript-6

ES6 支持数组解构,它可用于以如下简洁的语法交换变量,但这是否有效并建议在性能敏感的代码中作为数组处理?因为似乎需要一个新的临时数组来完成这个操作。

[a, b] = [b, a]
Run Code Online (Sandbox Code Playgroud)

Nat*_*Ngs 6

我们来测试一下!

let a = 42
let b = 69

console.log("for 2000000 iterations");

console.time("deconstruct")
for(let i=2000000; i>=0; --i)
  [a, b] = [b, a];
console.timeEnd("deconstruct")

console.time("classical")
for(let i=2000000; i>=0; --i) {
  let tmp = a
  a = b
  b = tmp
}
console.timeEnd("classical")
Run Code Online (Sandbox Code Playgroud)

所以这似乎不是更好的方法。