javascript获取函数中嵌套函数的索引

javascript获取函数中嵌套函数的索引,javascript,Javascript,我有一个对数组进行排序的函数,在其中,我有自定义排序函数。大概是这样的: function SortTheArray() { function SortCriteria1Asc(a, b) { ... } function SortCriteria1Dsc(a, b) { ... } function SortCriteria2Asc(a, b) { ... } function SortCriteria1Asc(a, b) { ... } var CustomSort;

我有一个对数组进行排序的函数,在其中,我有自定义排序函数。大概是这样的:

function SortTheArray() {

  function SortCriteria1Asc(a, b) { ... }
  function SortCriteria1Dsc(a, b) { ... }
  function SortCriteria2Asc(a, b) { ... }
  function SortCriteria1Asc(a, b) { ... }

  var CustomSort;

  switch (SomeVar) {

     case 1:
       CustomSort = SortCriteria1Asc;
       break;

     case 2:
        CustomSort = SortCriteria1Dsc;
        break;

     case ....
  }

  SomeDataArray.sort(CustomSort);
}
是否可以删除
switch
语句,并说
CustomSort
函数仅等于第n个嵌套函数


谢谢你的建议

您可以直接在数组中构建函数:

function SortTheArray() {
   var functions = [];
   functions.push(function(a,b) { ... });

然后您可以执行
函数[i](a,b)

不要给出函数名,而是将它们存储在一个数组中

var functions = [
  function (a,b) { ... },
  function (a,b) { ... },
  function (a,b) { ... }
];
那么就:

SomeDataArray.sort(functions[SomeVar]);

…但是数字索引函数标识符听起来不是一个好主意。您最好使用对象,而不是数组,并为它们指定描述性名称。

为什么不在对象中定义内部函数,该对象由您切换的变量索引

function SortTheArray(someVar){

   var sorters = {
       CriteriaA: function(array){ ... };
   };
   return sorters[someVar];
};

你真的想让这段代码更不可读吗?我觉得它可读性很强;什么还不清楚?现在是,但如果你用这些答案会吗?太糟糕了,这样你甚至失去了更多的上下文。现在您得到了SomeVar,它有一个整数值,引用一个匿名函数X,它显然以某种方式排序。。。当然,你可以注释你的代码,但是你仍然得到了与最初相同的行数,只是可读性较差。我可以将函数保留在数组名中吗?@GolezTrol-是的,请参阅答案的最后一段。@frenchie-我不明白。@GolezTrol-我在回答问题30秒后编辑了建议。+1,用于提供至少显示一点清晰的代码。