如何从eval()获取console.log输出?
问题描述:
我正在使用eval()
从字符串运行脚本。下面是代码:如何从eval()获取console.log输出?
eval('console.log("hello")');
我会从控制台输出得到hello
。我想知道是否可以将hello
保存到当前上下文中的变量中。所以我正在寻找这样的事情:
const output = eval('console.log("hello")');
//我希望控制台输出从eval()
函数返回。
但我得到一个undefined
响应。有没有办法让我这样做?
答
这是不可能的,因为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
可能重复[截取调用console.log在Chrome中](https://stackoverflow.com/questions/9216441/intercept-calls-to-console-log-in-chrome) – qxg
好控制台不会返回任何东西那么为什么你会期望它返回一些东西呢? – epascarello