下面的函数是用于arr.sort()的比较函数
function compare(a,b)
{
  var prop = "abc";
  var aProp = getValOfProp(a, prop);
  var bProp = getValOfProp(b, prop);
  return aProp>bProp?1:(aProp==bProp?0:-1)
}
(getValOfProp是对比较数操作的一个函数,可以忽略)
现在有个问题
变量prop能否通过增加compare函数的参数个数的方式从外部传入(除了使用全局变量),即定义类似
function compare(a,b,prop)
并在外部使用arr.sort(compare)调用?

解决方案 »

  1.   

    试试看
    arr.sort(
      (function(prop){
         return function(a,b){
            var aProp = getValOfProp(a, prop);
            var bProp = getValOfProp(b, prop);
            return aProp>bProp?1:(aProp==bProp?0:-1)
         }
      })("abc")
    );
      

  2.   

    这样呢?<script type="text/javascript">
    function compare(){
    alert(arguments.callee.arg);
    }
    var a = [1, 2];
    compare.arg = 5;
    a.sort(compare);
    </script>
      

  3.   

    可以用的 请问能给我稍稍解释下么?有点儿看不懂 为什么可以吧sort的func参数写成如此复杂?
      

  4.   

    web 开发近五年,尚未用过闭包,其实也不是很了解,js 还是简单明了些好!Web 开发常用手册JScript语言参考.rar
    http://download.csdn.net/source/308916DHTML参考手册.rar
    http://download.csdn.net/source/308913样式表中文手册.chm
    http://download.csdn.net/source/304124
      

  5.   

    我是有点不明白为什么func 参数可以写成arr.sort((func)(param))这样的形式