5

コードを使って少し簡単なテストを行う必要があり(関数内のいくつかの変数の値を取得する)、コンソールからアクセスできるようにグローバル化する必要があります。

私はこの方法を知っています:

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 = foo1、これらすべての変数をグローバル化するためのより迅速な方法は何でしょうか。window.foo2 = foo2

これがコードゴルフの質問ではなく、通常のプログラミングの質問であることを望みます。

4

3 に答える 3

3

これを行う方法はないと思います。これを参照してください:

すべてのローカル変数にアクセスする

コンソールで単にデバッグしてみましたか?Chromeでは、ブレークポイントを設定してから、すべての値を検査できます。このチュートリアルをチェックしてください:

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

于 2013-01-15T03:17:21.593 に答える
2

globals変数の束ではなく、単一のオブジェクトではないのはなぜですか?

function foo() {
    window.globals = {
        foo1 = 'foo',
        foo2 = 'foo',
        foo3 = 'foo',
        foo4 = 'foo',
        foo5 = 'foo',
        foo6 = 'foo',
        foo7 = 'foo',
        foo8 = 'foo'
    };
} 
于 2013-01-15T03:22:18.170 に答える
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
于 2013-01-15T03:21:48.750 に答える