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,用于提供至少显示一点清晰的代码。