我想扩展 Array.sort() 以接受另一个参数。这个问题有一个使用闭包的解决方案,所以这段代码有效:
var create_comparator = function(c) {
return function(a,b) { console.log(c); return a-b };
};
arr.sort( create_comparator('test') );
但是,就我而言,我已经定义了这样的函数:
var myComp1 = function(a,b) { console.log(c); return a-b };
返回预定义函数不起作用:
var create_comparator = function(sortfn, c) {
// Uncaught ReferenceError: c is not defined
return sortfn;
};
var arr = [7, 4, 9, 2, 1];
arr.sort( create_comparator(myComp1, 'test') );
我认为这是因为c
在创建原始函数时没有定义。我试图return function(a,b) { sortfn(a,b); }
创建一个新的闭包,但这也不起作用。
使用这种设置是否有可能为预定义函数提供额外的参数?是否有其他解决方案?