从控制台“拉”变量而不是“推”

时间:2016-02-15 14:15:15

标签: javascript browser console console.log

有没有办法在控制台中通过“拉”而不是“推”来读取变量值?

例如,比方说,我的JS中有一个地方:

var a = "foo";

我是否可以通过在控制台中输入

来从控制台“拉”a的值

$.a

$.this.a

通过“推”我的意思是在JS中写这样的东西:

console.log(a);

这是我希望做的事情。

1 个答案:

答案 0 :(得分:2)

如果变量在全局范围内或全局范围内的某个对象(例如window)具有对它的引用,那么您可以通过控制台从控制台读取/修改它简单的任务/参考;只需在控制台中输入MyGlobalMyGlobal = "foo"即可执行。在第一种情况下,它将打印当前值,在后者中它将修改该值。如果变量只是本地作用域(即它只是在特定函数中定义:function() { var a = "foo"; ...}),那么控制台无法使用脚本调试器(参见本答案的底部)或修改脚本来访问/更改它(见下文)。

如果变量不在全局范围内或由全局对象引用,但您可以编辑脚本,则可以轻松地将其打开到控制台。而不是var a = "foo",请执行window.myOptions = {a: "foo"}之类的操作。然后,从控制台,您可以执行window.myOptions.a阅读或window.myOptions.a = "bar"设置值。

如果您需要在脚本中读取/修改局部变量的值,而您无权更改实际脚本,则可以使用浏览器的脚本调试器。

一种简单的方法是在要读取/更改的变量上设置断点(通常通过在脚本调试窗口中的行号上单击鼠标;有关详细信息,请参阅上面的链接),然后在脚本执行时,它会在该行运行时暂停。用鼠标悬停在变量上,或者读取右侧的信息窗格(取决于调试器和窗口配置)将显示当前值。它还为您提供了修改变量值的机会。您也可以在函数定义中设置断点,以读取/更改为函数指定的参数。

可以在Safari,IE / Edge,Firefox和Chrome中使用(基本上任何具有良好调试工具的现代浏览器)。 Firefox有一个方便的分步指南,名为“检查,修改和监视变量”:https://developer.mozilla.org/en-US/docs/Tools/Debugger/How_to/Examine,_modify,_and_watch_variables