Javascript: 変数自体から変数名を参照する 質問する

Javascript: 変数自体から変数名を参照する 質問する

変数名と値を取得する簡単な関数を作成したいと思いますconsole.log。関数の結果をコンソールに表示したいと思いますfoo: bar

この機能に関する私の基本的な考え方は次のようになります。

function varlog(var_name)
{
    console.log(var_name + ": " + eval(var_name));
}

そして私はこう呼びます:

function someRandomFunction()
{
    var foo = "bar";
    // ... some stuff happens
    varlog("foo");
}

これはfooがグローバルな場合には機能しますが、提供された例では機能しません。 グローバルにのみ機能する別のオプションは、window[var_name]の代わりにを使用することですeval

私が尋ねていることは可能だとは思いませんが、あえて質問してみようと思いました。

私は怠けようと多くの時間を費やしています。私の現在の方法は、console.log('foo: ' + bar);うまく機能しています。しかし、今はこれが可能かどうかを知りたいだけです。

これを検索したり、今あるものを作成したりする際に参照した他のいくつかの質問:

--

varlog(foo)編集:変数から「foo」という名前を派生できる場合は、 を呼び出すだけにしたいと思います。

ベストアンサー1

解決 -(実際の使用例)-console.log({foo})

ES6 IdentifierReferencePropertyDefinitionObjectLiteralPropertyDefinitionList互換性チャートを見る):

変数名前Object's Property'sに設定されていますkey
そして変数価値Object's Property'sに設定されていますvalue

としてconsole.logObjectsとsのPropertiy/iesを表示しkeyvalueこれを使用して変数の両方を表示できます。名前そして価値呼び出すことによってconsole.log({foo})

object2 番目で行ったように、複数の変数を使用して単一の匿名を初期化するとconsole.log、スニペットの出力ではここで初期化された順序と同じ順序で表示されますが、他の場所では (アルファベット順に) 並べ替えられる可能性があることに注意してください。

var testint = 3
var teststring = "hi"
var testarr = ["one", 2, (function three(){})]
var testobj = {4:"four", 5:"five", nested:{6:"six",7:"seven"}}
console.log({testint})
console.log({testint, teststring, testarr, testobj})

答え -(質問タイトルへ)-Object.keys({foo})[0]

このショートカットを と一緒に使用して、Object Initializer変数Object.keys()名に直接アクセスすることもできます。

var name = "value"
console.log(Object.keys({name})[0])

おすすめ記事