I want to pass a function to another function. I think functions being passed like that are call delegates? I am having a hard time finding a good explanation for this kind of thing online. Is this the right way to do this?
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);
Your code:
Is a syntax error. The following is a function declaration:
And this is a function expression:
And this is a named function expression:
There are a number of answers here on the differences, there is a detailed explanation in the article Named function expressions demystified which also covers many other aspects of function declarations and expressions.
The term “anonymous function” is jargon for a function expression that has no name and isn’t assigned to anything, e.g.
where
someFnis called and passed a function that has no name. It may be assigned a name insomeFn, or not. Ic could just be referenced asarguments[0].Passing a function is not delegating, that is jargon for the practice of putting a listener on a parent element and catching bubbling events, it is preferred in cases where it can replace say a click listener on every cell in a table with a single listener on the table.
Anyhow, passing a function is just like passing any other object:
In the above,
foois passed tocallItand assigned to the local variablefn, and is then called.