変数名と値を取得する簡単な関数を作成したいと思います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);
うまく機能しています。しかし、今はこれが可能かどうかを知りたいだけです。
これを検索したり、今あるものを作成したりする際に参照した他のいくつかの質問:
- Javascript の文字列としての変数名
- JavaScript で変数名を文字列に変換するにはどうすればいいですか?
- Javascript では、名前を含む文字列を使用して変数を参照できますか?
- JavaScript 変数を名前で検索する方法
--
varlog(foo)
編集:変数から「foo」という名前を派生できる場合は、 を呼び出すだけにしたいと思います。
ベストアンサー1
解決 -(実際の使用例)-console.log({foo})
でES6 IdentifierReference
はPropertyDefinition
、ObjectLiteral
のPropertyDefinitionList
(互換性チャートを見る):
変数名前Object
's Property
'sに設定されていますkey
そして変数価値Object
's Property
'sに設定されていますvalue
。
としてconsole.log
Object
sとsのPropertiy
/iesを表示しkey
、value
これを使用して変数の両方を表示できます。名前そして価値呼び出すことによってconsole.log({foo})
。
object
2 番目で行ったように、複数の変数を使用して単一の匿名を初期化すると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])