Javascript 使用array.length时出现未定义的错误

Javascript 使用array.length时出现未定义的错误,javascript,Javascript,我正在用JavaScript实现气泡排序方法,下面是我当前的代码: // Sort array (ascending) function sort(array) { var sortedArray = array; // This swapped 'flag' tells the function whether or not it will // need to iterate over the array again to continue sorting var s

我正在用JavaScript实现气泡排序方法,下面是我当前的代码:

 // Sort array (ascending)
function sort(array) {

  var sortedArray = array;
  // This swapped 'flag' tells the function whether or not it will
  // need to iterate over the array again to continue sorting  
  var swapped = false;

  for( var i = 1; i < array.length; i++ ) {
    var prev = array[i - 1];
    var current = array[i];

    // If the previous number is > than the current, swap them around
    if( prev > current ) {
      swapped = true;

      sortedArray[i] = prev;
      sortedArray[i - 1] = current;
    }

  }
  // If there has been a swap, sort over the array again
  if( swapped ) {
    return sort();
  }

    return sortedArray; 
}


var testArray = [1, 4, 27, 3, 2];


// Run the sort function
sort(testArray); // [1, 2, 3, 4, 27]
//排序数组(升序)
函数排序(数组){
var-Darray=阵列;
//这个交换的“标志”告诉函数它是否会
//需要再次迭代数组以继续排序
var交换=错误;
对于(变量i=1;i当前){
交换=真;
SorterDarray[i]=上一个;
SorterDarray[i-1]=电流;
}
}
//如果进行了交换,请再次对数组进行排序
如果(交换){
返回排序();
}
返回至Darray;
}
var testArray=[1,4,27,3,2];
//运行sort函数
排序(testArray);//[1, 2, 3, 4, 27]
当我运行此程序时,我不断得到“无法读取属性。未定义的长度”

但是,我可以在for循环之前console.log(array.length)并返回一个值

这是我的一段代码

为什么我会得到一个“未定义的”

 // If there has been a swap, sort over the array again
  if( swapped ) {
    return sort();
  }

您正在返回sort(),这里没有参数。

根据我的评论:您需要再次将
数组传递给sort函数:

if (swapped) {
  return sort(array);
}

返回排序(数组)
不是
返回排序()!我想在尝试其他事情之前,我需要周一早上的咖啡。再次感谢!