解构赋值能否在递归中使用?

先上代码:


function fastSort(arr, isDown=false){

    if(getVarType(arr) !== "array" || arr.length <= 1){

        return arr;

    }

    var mid = arr.splice(Math.floor((arr.length-1)/2), 1)[0],

        left = [],

        right = [];

    for(var i=0; i<arr.length; i++){

        arr[i] > mid? right.push(arr[i]):

                    left.push(arr[i]);

    }

    [a, b] = isDown?[right, left]:

                    [left, right];


    return fastSort(a).concat(mid, fastSort(b));

}

var a = [417,7,9,42,3,3,43,90,0,66];

fastSort(a);

写了个快速排序,想用解构赋值的方式 实现升序降序功能,然后这种写法得到的数组是:[0, 3, 3],大概调试看了下发现 最后的return传的参数把a,b 改为left,right,结果就没问题。或者a,b的赋值改为


var a = isDown?right: left,

    b = isDown?left: right;

结果也是没问题,所以猜测会是和解构赋值这种写法有关么?

PS:控制台打了下断点,发现用 return fastSort(a).concat(mid, fastSort(b)) 这种写法fastSort(b) 都没有调用就直接return 最终结果了,所以导致得到的数组是 [0,3,3].


回首忆惘然
浏览 519回答 1
1回答

12345678_0001

朋友你定义全局变量了var [a, b] = isDown?[right, left]:&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; [left, right];
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript