如何在 chrome 控制台中访问局部函数变量?

Posted

技术标签:

【中文标题】如何在 chrome 控制台中访问局部函数变量?【英文标题】:How to access local function variable in chrome console? 【发布时间】:2021-02-28 16:35:51 【问题描述】:
var MyFunc =
  MyFunc ||
  (function (u, p) ....)

如果这段代码在一个名为abc.js的文件中,并且该网站有多个JS文件,我如何在chrome的控制台中打印变量u

我试过console.log(u)console.log(MyFunc.u) 都不起作用。

【问题讨论】:

这没有多大意义。 u 是函数的参数。它仅在函数执行时存在,即使如此,它的值也取决于您传递给MyFunc 的参数。当我打电话给MyFunc(1); MyFunc(2); MyFunc(3); 时,你希望它是什么? u 有 3 个不同的值。 值无关紧要,我只想在控制台中打印值。我想在实时网站上进行。 只要调试器在该函数表达式中暂停,console.log(u)(或在控制台本身中简称为u)应该会向您显示该值。 【参考方案1】:

如果我理解正确,您可以这样做:

var MyFunc =
  MyFunc ||
  (function (u, p) 
      console.log(u);
      console.log(p);
   
  );

MyFunc(1, 2);

当您运行上述代码时,它会将匿名函数分配给 MyFunc,然后您需要通过传递参数来调用该函数定义。

【讨论】:

如何在实时网站上做到这一点?我在调试器中暂停了程序,编辑了文件,按 ctrl+s 并恢复,但控制台中仍然没有打印任何内容。 @WilfredAlmeida 既然已经可以在调试器中检查值,为什么还需要打印这些值? @Ivar 我找不到变量u 将其添加到手表中。 在实时网站上,您需要在 JS 文件中放置断点,并且一旦执行该代码,您可以根据需要将其添加到全局变量中,但是,如果您想打印值在控制台上,您应该使用控制台 API。 @WilfredAlmeida,“u”的值将基于传递给它的参数,您应该添加断点,当您在该函数中时,您可以在控制台中输入“u”并且该值将被打印出来。

以上是关于如何在 chrome 控制台中访问局部函数变量?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Chrome 控制台中显示完整对象?

内部函数能够访问外部函数的局部变量,这个特性是闭包(Closure)编程的基础

如何从堆栈中访问函数局部变量?

局部变量和成员变量的区别

C++ 基本知识整理

chrome调试如何查看变量是哪里定义的