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

kg7wmglp  于 2023-01-29  发布在  Java
关注(0)|答案(3)|浏览(258)

我正在使用eval()从一个字符串运行一个脚本。下面是代码:
eval('console.log("hello")');
我将从控制台输出中获得hello,我想知道是否可以将hello保存到当前上下文的变量中,所以我正在寻找类似以下的内容:
const output = eval('console.log("hello")');//我希望eval()函数返回控制台输出。
但是我得到了一个undefined响应,有什么方法可以做到这一点吗?

11dmarpk

11dmarpk1#

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

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

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

希望这会有帮助。

uelo1irk

uelo1irk2#

你试过这个吗?

out = ''
console.log = function(val){out = out + ' ' + val}
eval('console.log("test string")')
pgpifvop

pgpifvop3#

虽然第一个答案有效,但它会导致“超出最大调用堆栈大小”错误。我认为这可能是一个更好的解决方案。

const originalLog = console.log;

console.log = function (...value) {
  originalLog.apply(console, value);
  return value;
};

const response = eval(code);

相关问题