js代码,比较大小的函数,不知道哪里错了,求帮助

 <html>
<head>
    <script type="text/javascript">
        function swap(a, b) {
            var c;
            c = a;
             a = b;
             b = c;
        }
        var a = [1,2];
        alert(a[1]);
        swap(a[0],a[1]);
        alert(a[0]);
        alert(a[1])
    </script>
</head>
<body>
</body>
</html>

图片说明
提示说的是 好像ab没定义?

然后下面这个报错事什么意思?
图片说明

a[0],a[1]是值引用(非对象,普通类型如数字,字符串,布尔都是值引用),不是地址引用,无法交换数组中的值,直接传递数组进行交换

        function swap(arr) {
            var c;
            c = arr[0];
             arr[0] =arr[1];
             arr[1] = c;
        }
        var a = [1,2];
        alert(a[1]);
        swap(a);
        alert(a[0]);
        alert(a[1])

编辑器的问题,你那样浏览器也不会报错,js添加事件需要传递函数句柄,不能字符串,这个和dom中onclick属性不一样,dom中的onclick会生成一个匿名函数,函数体为属性值

 document.getElementById('sort-btn').onclick=btnHandle//()//注意不能带(),直接函数名称(句柄),要不是执行函数将返回值作为onclick处理函数
或者
document.getElementById('sort-btn').onclick=function(){btnHandle()}//==>等价于dom属性 <input onclick="btnHandle()"

你可以看看冒泡写法,如果是我,我会这样定义:var a=arr[0];var b=arr[1];if(a>b){alert(a);}else{alert(b)}