<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(文字列) は文字列を数式として評価する組み込み関数ですが、近年は推奨されていません。
まして、このような使い方をするのは不適切だとされています。
しかし、簡潔な方法ですので、私的利用として、勝手に使っています。