ES6支持数组解构,它可以像下面那样用简洁的语法来交换变量,但这是否高效,并且在性能敏感的代码中作为数组处理被建议?因为它似乎需要一个新的临时阵列才能完成此操作。是通过数组解构高效交换变量吗?
[a, b] = [b, a]
ES6支持数组解构,它可以像下面那样用简洁的语法来交换变量,但这是否高效,并且在性能敏感的代码中作为数组处理被建议?因为它似乎需要一个新的临时阵列才能完成此操作。是通过数组解构高效交换变量吗?
[a, b] = [b, a]
让我们来测试!
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")
所以它不似乎是更好的方式来做到这一点。
您可能会从[规范](http://www.ecma-international.org/ecma-262/6.0/index.html#sec-destructuring-assignment)获得一些评估信息。 – Li357
@ Li357该规范没有详细说明性能 – Bergi
@Bergi我正在处理“似乎需要一个新的临时阵列来完成此操作”的担忧。 – Li357