如何从 JavaScript 控制台访问 jsFiddle 中的变量?

33

我创建了一个带有以下代码的fiddle

var x=10;

当我尝试在控制台中查看时,我得到了以下内容:
> x
ReferenceError: x is not defined

有道理,因为运行控制台需要使用Javascript。有没有办法让它正常工作?
2个回答

69
如果您使用Chrome或Chromium,请查看开发者控制台底部,其中会出现字符串<top frame>。单击它并选择result(fiddle.jshell.net)。这将更改浏览器的当前作用域,并且您可以访问所有全局变量。此外,如果您想要访问var变量,请记得将jsFiddle中的加载选项更改为no wrap

Screenshot Chrome

更新:2014.12.01

使用Firefox(34+)和新的Firefox开发者版,可以通过在开发者工具中启用选择一个框架作为当前目标文档额外工具来实现相同的操作,然后单击它并选择http://fiddle.jshell.net/_display/

Screenshot Firefox


4
我已经这样做了,但是变量仍然未定义。 - Casebash
3
我更新了我的回答@Casebash。如果在jsFiddle中使用onLoad选项运行代码,则控制台将无法访问var x,因为代码将被包装在闭包中(即附加到onLoad事件的函数)并从控制台中隐藏。 - Ragnarokkr
4
如果一个变量超出了它的作用域,你可以在变量仍处于作用域范围内的代码中设置断点,然后当断点被触发时,你可以从控制台访问该变量,因为控制台位于暂停断点所在的上下文环境中。 - AaronLS
将加载类型更改为“不换行 - 放在<body>底部”选项。 - Eido95

5
控制台就像它自己的闭包,其中 this === window :你只能看到在控制台中定义的变量(每个命令/脚本)。
因此,您有两种方法可以发布在控制台中可见的数据:
  1. var x = 5; console.log(x); //不是作为控制台命令,而是作为代码
  2. window.x = 5; //现在x是全局的,在控制台中你会得到x=5。
除了纯粹的控制台命令之外,您还可以使用调试器。在Firebug及Chrome的开发工具中,您可以设置断点,刷新页面(在jsFiddle中应运行此操作),然后您可以查看作用域中变量的实际值。 (您需要重新加载页面一次,以将代码放入调试器中,然后进行下一次重新加载,将在document.ready事件中获取断点)。

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