<script>
function 例1() {
var 変数 = 123;
var 変数名 = Object.keys({変数})[0];
alert(変数名); // "変数" が表示
}
</script>
<button onClick="例1()">例1</button>
<script>
function test() {
// ======= スカラ変数名
var 文字列 = "変数";
eval("var " + 文字列 + ";");
変数 = 10;
alert("変数 = " + 変数);
// ======= 配列名
var 配列名 = "配列";
eval("var " + 配列名 + " = [];");
配列[0] = 20;
alert("配列[0] = " + 配列[0]);
// ======= こんなこともできる
var 系列名 = [ "製品A", "製品B" ];
for (var i = 0; i < 系列名.length; i++) {
eval("var " + 系列名[i] + " = [];");
for (var j = 0; j < 3; j++) {
eval(系列名[i] + "[" + j + "] = " + (30+10*i+j) + ";");
}
}
alert("製品A[0] = " + 製品A[0]);
alert("製品B[1] = " + 製品B[1]);
}
</script>
<button onClick="例2()">例2</button>
(順に 10, 20, 30, 41 が表示されます。)eval(文字列) は文字列を数式として評価する組み込み関数ですが、近年は推奨されていません。
まして、このような使い方をするのは不適切だとされています。
しかし、簡潔な方法ですので、私的利用として、勝手に使っています。