There is no obvious difference between an arrow function and a regular function.
({}).toString.call(function () {})
\"[object Function]\"
({}).toString.call(
The best I can think of is using toString
:
let isArrowFunction;
isArrowFunction = (fn) => {
console.log(fn.toString());
return fn.toString().indexOf('function') !== 0;
};
console.log(isArrowFunction(() => {}) === true);
console.log(isArrowFunction((foo: string) => {}) === true);
console.log(isArrowFunction(function () {}) === false);
See:
(function () {}).toString();
"function () {}"
(() => {}).toString();
"() => {}"