如何在Chrome调试器中检查JavaScript函数返回值?

如何在Chrome调试器中检查JavaScript函数返回值?,javascript,google-chrome,google-chrome-devtools,Javascript,Google Chrome,Google Chrome Devtools,它来自gdb,完成时会打印函数的返回值。有没有一种方法可以从Chrome调试器中获取此信息而不更改正在调试的源?如果设置断点,您可以将鼠标悬停在变量上,它将显示值是什么——这对您尝试执行的操作有效吗?也许这样可以 1.)查看页面源代码 2.)查找函数定义并将其复制到剪贴板 3.)修改剪贴板上的函数定义,以记录它将要返回的值。(即,console.log(x);返回x;) 4.)将修补后的函数定义粘贴到控制台并运行它。这将覆盖现有功能 5.)触发该功能。不,目前没有办法 然而,这是有原因的。它已经

它来自gdb,完成时会打印函数的返回值。有没有一种方法可以从Chrome调试器中获取此信息而不更改正在调试的源?

如果设置断点,您可以将鼠标悬停在变量上,它将显示值是什么——这对您尝试执行的操作有效吗?

也许这样可以

1.)查看页面源代码

2.)查找函数定义并将其复制到剪贴板

3.)修改剪贴板上的函数定义,以记录它将要返回的值。(即,
console.log(x);返回x;

4.)将修补后的函数定义粘贴到控制台并运行它。这将覆盖现有功能


5.)触发该功能。

不,目前没有办法


然而,这是有原因的。它已经分配好了,在撰写本文时它还在等待。

这在Chrome中仍然是不可能的,但在Firefox 24+中是可能的。您需要从函数中跳出(Shift+F11),它将显示返回值或函数作用域中抛出的异常。

从2013年11月5日开始实施,但显然只有在我写这篇文章时才在Chrome Canary中发布。(我在33.0.1719.0中看到了它,但在Chrome Beta版32.0.1700.19中没有看到。)

如果您正在运行的版本确实包含它,那么当您单步执行return语句时,调试器的
作用域变量
本地作用域包含一个带有该值的
条目


(我需要使用Canary进行主调试,但在看到问题中引用的之前,我没有注意到
条目的存在!)

我的Chrome版本是41.0.2272.118 m。这里有一个很好的理由说明为什么应该将复杂的return语句放在单独的一行上。如果在返回后的任何一行上添加断点,当断点被命中时,Chrome将(在本例中)在Sources面板“Scope Variables”窗格的“Local”节点下添加一个“:true”叶

function bar() {
   return true;
}    
(function foo() {
   return bar();
})(); // Place breakpoint here

我使用的是Chrome版本57.0.2987.98 beta版(64位),它就在那里,拥有它真的很好。以下是一个屏幕截图:


var a=abc();控制台日志(a);他说他希望在不更改源代码的情况下执行此操作。您的意思是每次任何函数返回值时,都希望将其记录到控制台吗?如果出现任何递归或类似情况,您的控制台将充满消息,并且可能会挂起。正如Waynn指出的,值得重复:我希望在不更改源代码的情况下看到函数返回值。不,我不想把它记录到控制台。如果边栏中有“last returned value”之类的内容,那就太好了。在Visual Studio/gcc应用程序开发调试中体验过这一好处之后,我相信这一点具有巨大的价值。观察返回值是一种健全的检查,额外的数据在经过时几乎总是有助于一目了然。这就像更多的屏幕房地产——你认为你不需要它,但一旦你拥有了它,你就会想,当你不需要的时候,你是如何相处的函数返回值并不总是存储在变量中。如果在“上次返回值”的边栏中有一个自动变量或监视值,那就太好了。是的,这是真的。不幸的是,我不认为有办法查看函数最后返回的值。是否有任何变量名可供使用,以便我们可以在控制台中打印出来?Thanks@nXqd是的,有办法。至于“”解释,您可以右键单击本地范围中的“返回值”并选择“存储为全局变量”。这在Firefox.IMO中也适用,这是问题的答案,在Chrome 52上对我也适用。(这不是金丝雀)