我正在使用
我读到函数
caller
自 ES5 以来已被弃用(不确定 ES5)。所以我不能在严格模式下使用它。我不认为禁用严格模式是个好主意。 有什么好的替代函数或属性可以用在strict mode
吗?
这里是我读过的链接。这里没有替代品。
当我尝试使用来电者时,这是一条错误消息。
TypeError: 'caller', 'callee', and 'arguments' properties may not be accessed on strict mode functions or the arguments objects for calls to them
谢谢你。
我尝试在严格模式下查看日志。 我想看看是从哪里打来的 所以我访问函数调用者。 但我看到一条错误消息。
看来不可能。但是您可以获得调用者的名称,并且如果可以从被调用者的范围访问调用者,则可以评估调用者。不确定这是否可以在生产中使用。无论如何,如果您需要调用者,请将其作为参数传递给被调用者。
'use strict';
function fnCaller(){
fnCallee();
}
function fnCallee(){
console.log(caller());
}
fnCaller();
<script>
function caller(){
try{
throw new Error;
}catch(e){
const name = e.stack.split('\n')[3].match(/(?<=^\s*at\s*)\S+/)[0];
return eval(name);
}
}
</script>