How to properly return an empty function?

Use the lambda expression:

$R.functionNull = () => void 0;

You can add a body to your function and have it return undefined:

$R.functionNull = function() {
    // Events not supported.
    return undefined;
};

This keeps the same semantics as a "truly empty" function, and should satisfy JSLint.


For me this works best:

emptyFunction = Function();

console.log(emptyFunction); // logs 'ƒ anonymous() {}'
console.log(emptyFunction()); // logs 'undefined'

It's so short that I wouldn't even assign it to a variable (of course you can also use a constant-like variable "EF" or so, that's even shorter and doesn't need the additioal "()" brackets). Just use "Function()" anywhere you need a truly empty function, that doesn't even have a name, not even when you assign it to a variable, and that's the small behaviour difference between my solution and Frédéric's:

// --- Frédéric ---

emptyFunction = function() {
   return undefined;
}

console.log(emptyFunction.name); // logs '"emptyFunction"'

// --- me ---

emptyFunction = Function();

console.log(emptyFunction.name); // logs '""' (or '"anonymous"' in chrome, to be fair)

What about returning

return () => undefined;

instead of

return $R.functionNull;