将console.log的值赋给一个变量

31

如何将使用console.log打印的JavaScript对象分配给变量?

我在Chrome控制台中。 使用Ruby,我会使用test = _来访问最近打印的项。

5个回答

44
如果您想对已经被记录(一次性事情)的对象进行此操作,Chrome控制台提供了一个很好的解决方案。在控制台中悬停在打印出的对象上,右键单击,然后单击“存储为全局变量”。Chrome会为您分配一个临时变量名称,您可以在控制台中使用它。 enter image description here

6
这个需要更多的赞!一半的回答甚至没有回答到实际问题,而这正是问题所在。让我们面对现实吧:覆盖console.log很麻烦,而我在想查看被记录下来的东西之前并没有记得去这样做。 - Thanatos
临时变量的名称应该是什么? - coco97
2
@coco97 变量名为 temp,带有自动递增数字(即 temp1temp2temp3,...)。 - yeger

23

你可以重写标准的console.log()函数,并添加你需要的行为:

console.oldLog = console.log;

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

// Usage

console.log('hello');

$log // Has 'hello' in it

这种方法可以使您无需更改现有的日志记录代码。您还可以通过添加一个数组并存储所有已打印对象/值的整个历史记录来扩展它。


2
一个优雅的解决方案,但是捕获警告和错误也会很好。我该如何实现呢? - Really Nice Code
1
ReferenceError: $log未定义。 - rsc05

18

在 Chrome 开发者工具中,您可以通过 $_ 访问最后一项:

> 1+1;
  2
> $_
  2

5
谢谢你,@stewie,但是这对于通过console.log打印的对象无效(+1因为我不知道这个功能)。 - Dru

5

mirrormx的回答的衍生品,但更加方便。我不需要编写函数,可以随时随地将其放在任何地方。

console.log(window.$log = data);

2

这里是关于命令行API的Chrome参考文档。虽然有$_变量,但它“返回最近评估表达式的值”,并不会被打印出来。你可以自己创建一个日志函数,像这样:

function log(data){
   console.log(data);
   return data;
}
// after that you can access last printed value by $_

请注意,我的功能只是一个例子,console.log的功能要更加先进。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接