1

デバッグするとき、私はよく次のようなことを書きます。同じ出力を与えるconsole.log("foo:"+foo+", bar:"+bar)関数を書くことは可能ですか? logValues(foo,bar)基本的に、変数からその変数の名前に移動する方法があるかどうかを尋ねています。インデックス生成を使用するだけで、引数配列のループを設定する必要がありますか? [0]: 'value of foo, [1]: 'value of bar'

読んでくれてありがとう

4

4 に答える 4

3

このコードを試してください:

var logValues = function(){
    var args = arguments;
    for(var i in args)
        window.console.log(args[i] + ": " + eval(args[i]));
}
logValues("foo","bar");
于 2012-05-09T00:10:49.253 に答える
2

(これらのオプションはいずれも質問に直接答えませんが、あなたがやろうとしていることに対してより良い代替手段を提供するはずです)

WebKit のインスペクタ (Firebug だと思います) を使用すると、複雑な型をログに記録できます。ヘルパーを記述する必要はまったくありません。

ちょうどconsole.log(foo, bar)、あなたは設定されています。またはconsole.log({foo: foo, bar: bar})、出力に変数名が必要な場合。

別の答え:

オブジェクトを取得してそれを吐き出すだけのヘルパーを考えるかもしれません。しかし、ログに記録された出力とほぼ一致する、より読みやすいコードが得られます。

window.logValues = function(values) {
  var k, v;
  var pairs = [];

  for (k in values) {
    v = values[k];
    pairs.push("" + k + ": " + v);
  }

  console.log(pairs.join(", "));
};

次に、次のように呼び出します。

logValues({foo: 1, bar: "asdf"})

あなたが見るもの:

foo: 1, bar: asdf

オプション #3:

または、必要以上に型情報を削除する可能性がある、より簡潔な例:

window.logValues = function(values) {
  console.log(JSON.stringify(values));
}
于 2012-05-09T00:18:56.567 に答える
0
function logValue(foo)
{
    console.log(foo + ": " + eval(foo));
}

var foo = "something";
logValue("foo");

これは機能しますが、foo 変数が logValue 関数内で使用可能であることを確認する必要があります。

于 2012-05-09T00:16:01.253 に答える