如何从eval()获取console.log输出?

问题描述:

我正在使用eval()从字符串运行脚本。下面是代码:如何从eval()获取console.log输出?

eval('console.log("hello")');

我会从控制台输出得到hello。我想知道是否可以将hello保存到当前上下文中的变量中。所以我正在寻找这样的事情:

const output = eval('console.log("hello")'); //我希望控制台输出从eval()函数返回。

但我得到一个undefined响应。有没有办法让我这样做?

+0

可能重复[截取调用console.log在Chrome中](https://stackoverflow.com/questions/9216441/intercept-calls-to-console-log-in-chrome) – qxg

+1

好控制台不会返回任何东西那么为什么你会期望它返回一些东西呢? – epascarello

这是不可能的,因为console.log()只返回undefined,但是你可以使一个函数返回一些东西。

例子:

console.oldLog = console.log; 
console.log = function(value) 
{ 
    console.oldLog(value); 
    return value; 
}; 

const output = eval('console.log("hello")'); 

希望这会有所帮助。

+2

这是进入一个危险的领域,与预定义的东西搞乱。 – TricksfortheWeb

+1

虽然很好的答案。 :) – TricksfortheWeb