It's a named function expression. The name of the function is only available as a variable within the function itself. This can be useful for recursion, for example:
var obj = {
foo: function foo(node) {
// Do something to node
var childNode = node.firstChild;
while (childNode) {
foo(childNode);
childNode = childNode.nextSibling;
}
}
};
The name of the function is also available in most browsers via the non-standard name
property of the function, which can help identify functions while debugging or examining stack traces.
IE < 9 has a flawed implementation, so you need to exercise care when using it. Full details can be found in Juriy Zaytsev's excellent article on the subject.