gpt4 book ai didi

javascript - 计算对 eval 的调用次数

转载 作者:行者123 更新时间:2023-11-28 14:05:22 25 4
gpt4 key购买 nike

我想计算我们的 javascript 应用程序中对 eval 的调用次数。

我想出了以下内容,但它会产生错误。这些错误很难追踪,而且我对应用程序的了解有限。

你能告诉我我的代码有什么问题吗?

increment = function (){
var me = arguments.callee;
if (!me.count) me.count = 0;
return ++me.count;
}

var oldEval = eval;

eval = function eval(string){
console.log('eval number ', increment());
return oldEval(string);
}

或者您知道计算 eval 使用情况的替代方法吗?

谢谢

奥利维尔

最佳答案

不幸的是,没有一种无懈可击的方法来模拟/包装 eval,因为它不是一个正常的函数。它可以访问(读和写)直接调用者的局部变量。

function testeval() {
var a= 2;
eval('a*= 2');
alert(a); // 4
};

这是你无法从原生 JavaScript 函数模拟的魔法。您无法从 myWrappedEval 获取调用者中的 a 值或写回更改后的值。虽然您可以使用 arguments.caller 获取调用者函数,但无法读取函数调用的局部变量。

您必须在每次使用源代码中找到的 eval 之前手动插入对 increment 的调用。或者,更好的方法是删除对 eval 的每次调用,并用更好的代码替换它,使调用总数为零。 ;-)

关于javascript - 计算对 eval 的调用次数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1797419/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com