[eval() 関数]
JavaScript にはプログラミングを容易にするための多くのトリックがあります。
そのうちの 1 つは eval() 関数で、文字列を JavaScript 式として実行できます。
小さな例:
var the_unevaled_answer = " 2 3";
var the_evaled_answer = eval("2 3");
alert("未評価の回答は " the_unevaled_answer "、評価済みの回答は " the_evaled_answer" です);
この eval プログラムを実行すると、文字列「2 3」が実際に JavaScript で実行されることがわかります。
つまり、the_evaled_answer の値を eval("2 3") に設定すると、JavaScript はそれを理解し、2 と 3 の合計を the_evaled_answer に返します。
これは少しばかげているように思えるかもしれませんが、実際には非常に興味深いことができます。たとえば、eval を使用すると、ユーザー入力に基づいて関数を直接作成できます。
これにより、時間やユーザー入力に基づいてプログラム自体を変更することができ、1 つの例から推論を引き出すことで、驚くべき結果を得ることができます。
実際には eval が使用されることはほとんどありませんが、インデックス付けが難しいオブジェクトを取得するために eval を使用している人を見たことがあるかもしれません。
ドキュメント オブジェクト モデル (DOM) の問題の 1 つは、要求したオブジェクトを取得するのが面倒な場合があることです。
たとえば、どの画像を変換するかをユーザーに尋ねる関数を次に示します。 どの画像を変換するには、次の関数を使用できます:
function swapOne()
{
var the_image =prompt("オウムまたはチーズを変更",""); var the_image_object;
if (the_image == "オウム")
{
the_image_object = window.document.parrot;
else
{
the_image_object = window.document .cheese;
}
the_image_object.src = "ant.gif";
}
と次の画像タグ:
[img src="/stuff3a/] parrot.gif" name ="parrot"]
[img src="/stuff3a/cheese.gif" name="cheese"]
次のような数行に注意してください:
the_image_object = window.document .parrot;
画像オブジェクトを変数に代入します。少し奇妙に見えますが、文法的には正しいです。
しかし、2 枚ではなく 100 枚の画像がある場合はどうなるでしょうか?次のようにできれば、if-then-else ステートメントをたくさん書く必要があります:
Copy code
var the_image =prompt("オウムまたはチーズを変更","");
window.document.the_image.src = " ant.gif";
}
残念ながら、JavaScript は予想どおり、"cheese" や "parrot" ではなく the_image という名前の画像を検索します
そのため、エラー メッセージが表示されます: 「the_image という名前のオブジェクトは聞いたことがありません。」
幸いなことに、eval は必要なオブジェクトを取得するのに役立ちます。
コードをコピー
var the_image = プロンプト("オウムまたはチーズを変更します","");
var the_image_name = "window.document." the_image;
var the_image_object = eval(the_image_name); "ant.gif";
}
ユーザーがプロンプト ボックスに「parrot」と入力すると、2 行目に文字列 window.document.parrot が作成されます。次に、eval を含む 3 行目の
行は、「オブジェクト window.document をください」を意味します。 .parrot" - つまり、必要な画像オブジェクトです。画像オブジェクトを取得したら、その src 属性を ant.gif に設定します。少し怖いですか?必要なし。これは実際に非常に便利で、多くの人が使用しています。
JavaScript では Eval 関数がよく使われます。
この関数は一部の文字列を非常に強力な関数に変えることができます。
この関数は、通常の文字列を特定のオブジェクトに変換する必要がある場合に使用します。文字列パラメータの場合に使用されます。文字列が式の場合、eval はその式を評価します。引数が 1 つ以上の JavaScript ステートメントを表す場合、eval はそれらのステートメントを実行します。 eval 関数を使用すると、日付を形式 (常に文字列) から数値式または数値に変換できます。
==============================
Eval 関数
関数: 最初に Javascript コードを説明し、
使用法: Eval(codeString)
codeString は、eval 後に Javascript エンジンを使用してコンパイルされる Javascript ステートメントを含む文字列です。
注:
例: eval(id "_icon.src="/imgs/collapse_up.gif'");
id は以前に設定されたパラメータで、二重引用符内の文字列は
コンパイルする必要があるコードをコピーします
if (top.topframeset.rows == "31,*")
{
top.topframeset.rows = "86,*";
eval(id "; _icon .src="/imgs/collapse_up.gif'");
eval(id "_icon.alt='頭を折りたたむ'");
head.style.display = "ブロック"
}
else
{
top.topframeset.rows = "31,*";
eval(id "_icon.src="/imgs/collapse_down.gif'");
eval( id "_icon.alt='Expand The Head'");
head.style.display = "none"
}
}
詳細については、を参照してください。 :
javascript eval() の使用法