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

Fir*_*ind 5 javascript node.js strict-mode ecmascript-6

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

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

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

arguments.callee.caller.name不工作或者(V7.5.0的NodeJS)

Ber*_*rgi 1

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

不,那里没有。

还是ES未来的计划中?

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

  • 但是有没有办法获得**方法名称**?它对于动态方法非常有用。 (2认同)
  • 这不完全是一种“正确”的方式,所以我不会将其作为答案发布,但它可能足以进行调试。在函数内调用“callees()[0]”来获取其名称。我只做了一些基本的测试: `function callees() { return (new Error()).stack.split(/\n/).slice(2).map(s => s.replace(/^\ s+at\s+(\<?[\w.]+\>?).*/, '$1')) }` (2认同)
  • 如果我想在 10 个函数中添加 console.debug(当前函数名称),那么在每个函数中添加实际名称很烦人且容易出错。复制并粘贴 console.debug(arguments.callee) 更方便(我不需要重复函数名称)。顺便说一句,我正在使用 VisualStudio Code,还没有研究过 JavaScript 的自动重构工具。你能推荐一些吗? (2认同)