javascript merge/sort 致命错误

javascript merge/sort fatal error

我在写归并排序算法,在归并辅助函数中,有如下比较语句:

    function merge(a,b){
        var result = [];
            while(a.length && b.length){
                    result.push(a[0] < b[0] ? a.shift() : b.shift()); // you can't just grab a[0] or b[0] 
        //as it results in a fatal error.
                }
return, etc.
}

为什么当我输入 'a.shift()' 而不是 'a.shift()' 时,却导致了致命错误?是不是因为你正在用条件子句中的东西做某事?

查看 shift 的文档。它删除第一个元素。因此,如果您只访问 a[0] 并且不删除它,那么 while 循环将永远不会退出。