6

arguments.callee不幸的是deprecated,并且在“严格模式”下使用它会引发错误。

是否有任何新的适当(标准)替代方法可以在实际函数中获取函数名称? 还是会出现在未来的 ECMA6、7 计划中?

最近的答案只不过是肮脏的黑客,我的回答是不可接受的。

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

4

2 回答 2

1

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

不,那里没有。

还是在 ES 的未来计划中?

不,鉴于没有必要。在当前函数中,您知道名称并且也可以使用字符串文字,在其他函数中您只需要一些参考(但不是.callee)。

于 2017-02-26T20:54:02.087 回答
0

如果你使用 Node.js,有一个有用的包正好可以解决这个问题:caller-id

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

function foo() {
    bar();
}

function bar() {
    var callerName = callerId.getData().functionName; /* 'foo' */
}
于 2017-02-26T20:27:22.650 回答