ホームページ >ウェブフロントエンド >jsチュートリアル >Javascript_javascript スキルでの Eval 関数の使用手順

Javascript_javascript スキルでの Eval 関数の使用手順

WBOY
WBOYオリジナル
2016-05-16 18:59:58977ブラウズ

小さな例:

コードをコピー コードは次のとおりです:

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("changeオウムまたはチーズ","");
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 ステートメントをたくさん書かなければなりません:
function swapTwo()
{
var the_image = prompt("オウムまたはチーズを変更"," " );
window.document.the_image.src = "ant.gif";
}
残念ながら、JavaScript は期待どおりに "cheese" や "parrot" ではなく the_image を検索します。 > すると、「the_image という名前のオブジェクトを聞いていません」というエラー メッセージが表示されます。
幸いなことに、eval は必要なオブジェクトを取得するのに役立ちます。
function simpleSwap()
{
var the_image = prompt("オウムまたはチーズを変更","");
var the_image_name = "window.document."
var the_image_object = eval(the_image_name);
the_image_object.src = "ant.gif";
}
ユーザーがプロンプト ボックスに「parrot」と入力すると、2 行目に文字列 window が作成されます。次に、eval を含む 3 行目の
行は、「オブジェクト window.document.parrot をください」、つまり、必要な画像オブジェクトを与えます。画像オブジェクトを取得したら、その src 属性を ant.gif に設定します。少し怖いですか?必要なし。これは実際に非常に便利で、多くの人が使用しています。
JavaScript では Eval 関数がよく使われます。
この関数は一部の文字列を非常に強力な関数に変えることができます。
この関数は、通常の文字列を特定のオブジェクトに変換する必要がある場合に使用します。文字列パラメータの場合に使用されます。文字列が式の場合、eval はその式を評価します。引数が 1 つ以上の JavaScript ステートメントを表す場合、eval はそれらのステートメントを実行します。 eval 関数を使用すると、日付を形式 (常に文字列) から数値式または数値に変換できます。
==============================
評価関数
関数: まず Javascript コードを説明し、
使用法: Eval(codeString)
codeString は、eval 後に Javascript エンジンを使用してコンパイルされる Javascript ステートメントを含む文字列です。
注:
例: eval(id "_icon.src="/imgs/collapse_up.gif'");
id は以前に設定されたパラメータであり、二重引用符内の文字列は
参照ですコンパイルする必要があるもの:




コードをコピー
コードは次のとおりです。 id ) //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='頭部を展開'");
head.style.display = "none"
}
}

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。