从Javascript控制台访问jsFiddle中的变量?

Cas*_*ash 33 javascript firebug jsfiddle google-chrome-devtools

我用以下代码创建了一个小提琴:

var x=10;
Run Code Online (Sandbox Code Playgroud)

当我尝试在控制台中查看此内容时,我得到以下内容:

> x
ReferenceError: x is not defined
Run Code Online (Sandbox Code Playgroud)

有道理,因为它需要Javascript来运行控制台.有没有办法让这个工作?

Rag*_*kkr 68

如果您使用Chrome或Chromium,请查看<top frame>显示字符串的开发者控制台底部.单击它并选择result(fiddle.jshell.net).这将更改浏览器的当前范围,您可以访问所有全局变量.另外,no wrap如果您想要访问var变量,请记住在jsFiddle中更改加载选项.

屏幕截图Chrome

更新时间:2014.12.01

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

截图Firefox

  • @caspyin对于超出范围的变量,您可以在代码中放置一个断点,其中变量仍然在范围内,然后当命中断点时,您可以从控制台访问该变量,因为控制台位于断点暂停的位置. (4认同)
  • 我做到了,但变量仍未定义 (3认同)
  • 我更新了我的答案@Casebash.如果在jsFiddle中使用`onLoad`选项运行代码,则无法从控制台访问`var x`,因为代码将封装在一个闭包中(附加到`onLoad`事件的函数)并制作从控制台看不见. (3认同)

met*_*ngs 5

控制台就像它自己的闭包那样this === window:你只能在控制台中看到vars(每个命令/脚本).

因此,您有两种方法可以在控制台中显示可见的数据:

  1. var x = 5; console.log(x); // out of your code, not as console command
  2. window.x = 5; // now x is global, so in console you get 5 for x.

您可以使用调试器而不是纯控制台命令.在firebug和chrome的开发工具中,您可以设置断点,刷新页面(在jsFiddle中应该运行这样做),现在您可以在范围内查看变量的实际值.(您需要重新加载页面一次,将代码放入调试器,然后下次重新加载,您将在document.ready事件中获得断点.)