在JavaScript中全局化大量变量的快速方法?

时间:2013-01-15 03:12:57

标签: javascript global-variables

我需要使用我的代码进行一些快速测试(获取函数中某些变量的值),并且我想对它们进行全球化,以便我可以通过控制台访问它们。

我知道这个方法:

function foo() {
  var foo = 'foo';
  window.foo = foo; // Make foo global
}

但如果我有这样的事情怎么办?

function foo() {
  var foo1 = 'foo';
  var foo2 = 'foo';
  var foo3 = 'foo';
  var foo4 = 'foo';
  var foo5 = 'foo';
  var foo6 = 'foo';
  var foo7 = 'foo';
  var foo8 = 'foo';
}

在没有window.foo1 = foo1window.foo2 = foo2等的情况下,将所有这些变量全球化的更快捷的方法是什么?

我不希望这是一个代码高尔夫问题,只是一个普通的编程问题。

3 个答案:

答案 0 :(得分:3)

我认为没有办法做到这一点。见:

Access all local variables

您是否尝试过在控制台中进行调试?使用Chrome,您可以设置断点,然后检查所有值。看看这个教程:

https://developers.google.com/chrome-developer-tools/docs/scripts-breakpoints

答案 1 :(得分:2)

为什么不是单个globals对象而不是一堆变量?

function foo() {
    window.globals = {
        foo1 = 'foo',
        foo2 = 'foo',
        foo3 = 'foo',
        foo4 = 'foo',
        foo5 = 'foo',
        foo6 = 'foo',
        foo7 = 'foo',
        foo8 = 'foo'
    };
} 

答案 2 :(得分:0)

如果他们都被简单地命名,你可以利用一个鲜为人知的技巧,变量实际上是字典:

function foo() {
  var foo1 = 'foo';
  var foo2 = 'foo';
  var foo3 = 'foo';
  var foo4 = 'foo';
  var foo5 = 'foo';
  var foo6 = 'foo';
  var foo7 = 'foo';
  var foo8 = 'foo';
  for (var i = 1; i <= 8; i++) {
    window["foo" + i] = eval("foo" + i);
  }
}

document.write("Running foo...<br/>");
foo();

document.write("Printing foo...<br/>");
for (var i = 1; i <= 8; i++) {
  document.write(window["foo" + i]);
}

document.write("<br/>Just one: " + foo3);// Normal variable notation