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

How to get console.log output from eval()?

我正在使用 eval() 到 运行 来自字符串的脚本。下面是代码:

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

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

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

但我收到 undefined 回复。我有办法做到这一点吗?

这是不可能的,因为 console.log() 只有 return 未定义,但是您可以创建一个函数来 return 一些东西。

示例:

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

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

希望这会有所帮助。