{ named: function foo() {}, arrow: () => 1, method() {}, anonymous: (() => () => 1)(), "empty name": (() => { const f = function () {}; Object.defineProperty(f, "name", { value: "" }); return f; })(), class: class Foo {}, generator: function* gen() {}, async: async function af() {}, "with properties": Object.assign(function bar() {}, { prop: 1 }), } -- named: function foo(...){...} function foo(...) {...} { "/function": "foo(...)" } arrow: function arrow(...){...} function arrow(...) {...} { "/function": "arrow(...)" } method: function method(...){...} function method(...) {...} { "/function": "method(...)" } anonymous: (...)=>{...} (...) => {...} { "/function": "(...)" } empty name: (...)=>{...} (...) => {...} { "/function": "(...)" } class: function Foo(...){...} function Foo(...) {...} { "/function": "Foo(...)" } generator: function gen(...){...} function gen(...) {...} { "/function": "gen(...)" } async: function af(...){...} function af(...) {...} { "/function": "af(...)" } with properties: function bar(...){...} function bar(...) {...} { "/function": "bar(...)" }