当前正在运行的javascript函数名?

当前正在运行的javascript函数名?,javascript,typescript,Javascript,Typescript,这很好用: (function f() { console.log(f.name); //logs f })(); 但是有些答案要长得多,这让我觉得我可能错过了上述陈述中的一个gotcha(换句话说,它在本例中有效,但是…) 这里有一个稍微不同的typescript变体: function f1() {} function f2(f:Function) { console.log(f.name); } f2(f1); Function.name属性仅在符合ES6/ES20

这很好用:

(function f() {
    console.log(f.name);  //logs f
})();
但是有些答案要长得多,这让我觉得我可能错过了上述陈述中的一个gotcha(换句话说,它在本例中有效,但是…)

这里有一个稍微不同的typescript变体:

function f1() {} 
function f2(f:Function) {
   console.log(f.name);
}

f2(f1);

Function.name
属性仅在符合ES6/ES2015标准的发动机中可用。因此,例如,如果您尝试在Typescript中不进行额外配置的情况下访问它,则会出现以下错误:

[ts]属性“name”在类型“Function”上不存在

因此,对于typescript,在--lib值中包含
es2015
,以获取属性声明

    {
    "compilerOptions": {
        ...
        "lib": ["es2015"],                        /* Specify library files to be included in the compilation. */
        ...
    }

在您的代码中,您已经知道了
f
的nameTrue,但我认为如果这也是另一个函数的函数参数,那么它应该会起作用,对吗?请拿出一个有效的用例。这肯定是重复的:关于这个问题的17个答案对您的案例都不起作用吗?