如何将函数(委托?)作为参数传递给Javascript中的另一个函数,然后使用它

Ben*_*min 3 javascript jquery delegates function

我想将一个函数传递给另一个函数.我认为像这样传递的函数是调用委托人吗?我很难在网上找到这种事情的好解释.这是正确的方法吗?

function getCellContentByColumnIndex = function(row, index) {
    return $(row.children().get(index)).text();
}
function naturalSort(a, b, func) {
    //...
    var $a = func(a);
    var $b = func(b);
    //...
}

//usage  
naturalSort(x, y, getCellContentByColumnIndex);
Run Code Online (Sandbox Code Playgroud)

Rob*_*obG 6

你的代码:

function getCellContentByColumnIndex = function(row, index) {
    return $(row.children().get(index)).text(); 
}
Run Code Online (Sandbox Code Playgroud)

是语法错误.以下是函数声明:

functon foo() {}
Run Code Online (Sandbox Code Playgroud)

这是一个函数表达式:

var foo = function(){}
Run Code Online (Sandbox Code Playgroud)

这是一个命名函数表达式:

var foo = function bar(){}
Run Code Online (Sandbox Code Playgroud)

这里有许多关于差异的答案,在文章命名函数表达式揭秘中有一个详细的解释,它还涵盖了函数声明和表达式的许多其他方面.

术语"匿名函数"是一个函数表达式的术语,它没有名称,也没有分配给任何东西,例如

someFn( function(){...} )
Run Code Online (Sandbox Code Playgroud)

someFn调用where 并传递一个没有名字的函数.可以为其分配名称,也可以不分配名称someFn.Ic可以被引用为arguments[0].

传递一个函数不是委托,这是将侦听器放在父元素上并捕获冒泡事件的行话的行话,在它可以替换表示单个侦听器的表中每个单元格上的单击侦听器时,它是首选桌子.

无论如何,传递函数就像传递任何其他对象一样:

function foo(){
  alert('foo');
}

function callIt(fn) {
  fn();
}

callIt(foo);  // 'foo'
Run Code Online (Sandbox Code Playgroud)

在上面,foo传递给callIt并分配给局部变量fn,然后被调用.