为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

回首忆惘然 2018-12-12 14:15:33
先上代码: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].
查看完整描述

1 回答

?
12345678_0001

TA贡献1802条经验 获得超5个赞

朋友你定义全局变量了


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

                    [left, right];


查看完整回答
反对 回复 2019-01-25
  • 1 回答
  • 0 关注
  • 518 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信