平时直接用es6的方法交换数据都没有问题,今天报错,一直不理解为啥会报错。
代码这么写的:
maxHeap(arr, arr.length - i)
[arr[0], arr[arr.length - 1 - i]] = [arr[arr.length - 1 - i], arr[0]]
原来是不加分号就不会识别解构赋值那行代码,因为它前面有一行代码。JavaScript还是需要分号的,每一个分号都会让引擎来解析当前行。
加上分号,解决!
maxHeap(arr, arr.length - i);
// 使用es6解构赋值时需要在上一行加分号,否则会报错。
[arr[0], arr[arr.length - 1 - i]] = [arr[arr.length - 1 - i], arr[0]];