There is no obvious difference between an arrow function and a regular function.
({}).toString.call(function () {})
"[object Function]"
({}).toString.call(() => {})
"[object Function]"
or
console.dir( (function () {}) )
function anonymous()
arguments: null
caller: null
length: 0
name: ""
prototype: Object
__proto__: ()
<function scope>
console.dir( (() => {}) )
function anonymous()
arguments: (...)
caller: (...)
length: 0
name: ""
__proto__: ()
<function scope>
The behaviour of the two is different though and there is a valid use case for being able to tell the two apart.
How to programmatically distinguish an arrow function from a regular function?