JavaScript の「変数」変数 質問する

JavaScript の「変数」変数 質問する

PHPでは「可変」変数が使えることは知っています。例えば、

$x = "variable";
$$x = "Hello, World!";
echo $variable; // Displays "Hello, World!"

JavaScript で変数をその名前で文字列として参照することは可能ですか? どのようにすればよいですか?

ベストアンサー1

要約:使用しないでくださいeval!

これに対する唯一の解決策はありません。いくつかのグローバル変数は を介し​​て動的に変更windowできますが、関数ローカル変数には機能しません。しないでくださいのプロパティになるのは、および、およびwindowで定義された変数です。letconstclass

ほとんどの場合、変数を使用するよりも優れた解決策があります。代わりにあなたが見るべきなのはデータ構造問題に適したものを選択してください。

次のような固定の名前がある場合

// BAD - DON'T DO THIS!!!
var foo = 42;
var bar = 21;

var key = 'foo';
console.log(eval(key));

これらの名前/値をプロパティとして保存する物体使用して括弧表記動的に検索するには:

// GOOD
var obj = {
  foo: 42,
  bar: 21,
};

var key = 'foo';
console.log(obj[key]);

ES2015+既存の変数に対してこれを行うのはさらに簡単です。簡潔なプロパティ表記:

// GOOD
var foo = 42;
var bar = 21;
var obj = {foo, bar};

var key = 'foo';
console.log(obj[key]);


次のように「連続した」番号の変数がある場合、

// BAD - DON'T DO THIS!!!
var foo1 = 'foo';
var foo2 = 'bar';
var foo3 = 'baz';

var index = 1;
console.log(eval('foo' + index));

ならば、配列代わりに、インデックスを使用して対応する値にアクセスします。

// GOOD
var foos = ['foo', 'bar', 'baz'];
var index = 1;
console.log(foos[index - 1]);

おすすめ記事