关于函数调用的问题?

看了书上的冒泡排序的方法,自己下来写了写。<!DOCTYPE html>
<html lang="en">
<head>

<meta charset="UTF-8">
<title>Title</title>

</head>
<body>
<script>

function Arraaylist() {
    var array=[];
    this.insert=function (item) {
        array.push(item);
    };
    this.toString=function () {
        return array.join();
    };
    this.bubblesort=function () {
        var length=array.length;
        for(var i=0;i<length;i++){
            for(var j=0;j<length-1;j++){
                if(array[j]>array[j+1]){ //如果大于前一个的值,赋值给第二个。//32154
                    swap(j,j+1)
                }
            }
        }
        var swap=function (index1,index2) {
            var aux=array[index1];
            array[index1]=array[index2];
            array[index2]=aux;//将一的值给二
        };
    };
}
function creatnum(size) {
    var array=new Arraaylist();
    for(var i=size;i>0;i--){
        array.insert(i);
    }
    return array;
}

var array=new creatnum(7);

array.bubblesort();
alert(array);

</script>
</body>
</html>
问题是array的7个数字是塞进去了,但是调用bubblesort函数。浏览器提示错误,swap is not function;调用insert函数都没问题;var array=new Arraaylist();写这个的是不应该都是继承下来的么?

阅读 1.4k
1 个回答

swap 函数放在前面,函数表达式不会声明提升。

    this.bubblesort=function () {
        var swap=function (index1,index2) {
            var aux=array[index1];
            array[index1]=array[index2];
            array[index2]=aux;//将一的值给二
        };
        var length=array.length;
        for(var i=0;i<length;i++){
            for(var j=0;j<length-1;j++){
                if(array[j]>array[j+1]){ //如果大于前一个的值,赋值给第二个。//32154
                    swap(j,j+1)
                }
            }
        }

    };
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题