【发布时间】:2015-06-16 19:46:24
【问题描述】:
启用use strict后是否可以看到函数的被调用者/调用者?
'use strict';
function jamie (){
console.info(arguments.callee.caller.name);
//this will output the below error
//uncaught TypeError: 'caller', 'callee', and 'arguments' properties may not be accessed on strict mode functions or the arguments objects for calls to them
};
function jiminyCricket (){
jamie();
}
jiminyCricket ();
【问题讨论】:
-
一般情况下(很少例外)如果你想这样做 - 你做错了什么。试着用这段代码解释你想解决的真正的问题。
-
别无选择。推荐的方式是直接使用函数名,如
jamie.name // jamie。但是函数名称通常是无关紧要的,除了用于调试之外,它们对您的代码没有任何影响,并且依赖此功能而不是递归通常是一个 XY 问题。 -
说实话,我的代码没有任何真正的问题,但我有一个函数别名
console.info所以c = console.info本质上。因此,当我使用所述功能控制台某些东西时,它只会在控制台中显示它每次都来自同一个地方。我想输出调用它的函数。只是因为我的懒惰和酷都合二为一:D -
ye 当然 :) 但这意味着按 f11 .... 如果一点代码可以为我做到这一点,我不想再做任何事情:p 我是一名程序员..这是我这样做的唯一原因...我很懒
-
This MDN document 解释了为什么将其从 JS 严格模式中删除。基本上,使用
arguments.callee和arguments.caller的能力使某些 JS 引擎优化变得困难/不可能。
标签: javascript use-strict