変数の値をプロンプト ボックスに入力して、元の変数のアラートで返されるようにすることは可能かどうか疑問に思っています。
説明:プロンプトにvar myGoal = "answer";
「 」と入力した場合、「 」の値を取得して検索し、アラートで返すにはanswer
どのような方法がよいでしょうか?answer
myGoal
変数の値をプロンプト ボックスに入力して、元の変数のアラートで返されるようにすることは可能かどうか疑問に思っています。
説明:プロンプトにvar myGoal = "answer";
「 」と入力した場合、「 」の値を取得して検索し、アラートで返すにはanswer
どのような方法がよいでしょうか?answer
myGoal
このような何かがトリックを行います:
function test(val)
{
for (var i in window)
{
if (window.hasOwnProperty(i) && window[i] === val)
{
alert(i);
}
}
}
これは基本的にグローバルオブジェクト(ウィンドウ)内のすべてを繰り返し、探している値に等しいものが見つかるとアラートを発します。
アプローチを少し変更したい場合:
var Data = new Object();
Data["myGoal"] = "answer";
// ...
// Get response from prompt...
var response = /* ... */;
for (var key in Data)
{
if (Data[key] == response)
{
alert(key);
}
}
function test()
{
var answer = prompt("Hello? What is your name?",'');
alert(answer);
}
あなたが望むものを達成する唯一の方法は、 eval 関数を使用することです。Eval は「悪」関数としても知られています。コードに大規模なセキュリティ ホールを導入する可能性があり、非常に非効率的です。評価を使用しないでください。
問題は、変数に代入される値が常に文字列、数値、ブール値、未定義、配列、関数、またはオブジェクト リテラルになることです。ある変数が別の変数に割り当てられると、変数の内容が実際に割り当てられるため、変数名を別の変数に値として割り当てることはできません。
文字列を変数名に変換するのではなく、指定された値に対して明示的にテストするために、記述しようとしているテストを再設計する必要があります。