1. ホーム
  2. javascript

[解決済み] JavaScriptにおける "Variable "変数

2022-09-18 09:47:10

質問

PHPでは、quot;変数"変数を持つことが可能であることは知っています。 例えば

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

JavaScriptで変数名を文字列で参照することは可能でしょうか?どのように行うのでしょうか?

どのように解決するのですか?

tl;dr: を使わないでください。 eval !

これに対する唯一の解決策はありません。アクセスすることは可能です。 いくつか グローバル変数に動的にアクセスすることは可能です。 window を介して動的に設定することができますが、これは関数にローカルな変数に対しては機能しません。グローバル変数で をしない のプロパティになります。 window で定義された変数は letconst であり、かつ class のようなものです。

可変変数を使うより良い解決策がほとんど常にあります! その代わりに、あなたは データ構造 を見て、あなたの問題に適したものを選択する必要があります。

のような固定の名前がある場合は、その名前に合ったものを選ぶ必要があります。

// 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]);