如何在严格模式下获取函数名称[正确方法]

时间:2017-02-26 19:53:53

标签: javascript node.js ecmascript-6 strict-mode

arguments.callee不幸deprecated,使用它会在“严格模式”中引发错误。

是否有任何新的适当(标准)替代方法可以在实际功能中获取功能名称? 或者它将在未来的计划中ECMA6,7?

最近的answer只不过是肮脏的黑客,我不能接受。

arguments.callee.caller.name也没有工作(nodejs v7.5.0)

2 个答案:

答案 0 :(得分:2)

  

是否有任何新的正确(标准)替代方法可以在实际函数中获取函数名称?

不,没有。

  

或者它是否会出现在ES的未来计划中?

不,因为没有必要。在当前函数中,你知道名字,也可以使用字符串文字,在其他函数中你只需要一些引用(但不是.callee)。

答案 1 :(得分:1)

如果您使用Node.js,则会出现一个针对此问题的有用包:caller-id

var callerId = require('caller-id');

function foo() {
    bar();
}

function bar() {
    var callerName = callerId.getData().functionName; /* 'foo' */
}