تحتوي JavaScript على العديد من الحيل الصغيرة لتسهيل البرمجة. إحداها هي الدالة eval()، التي تتعامل مع السلسلة كتعبير JavaScript وتنفذها. فيما يلي وصف
لوظيفة وظيفة Eval: قم أولاً بتفسير كود Javascript، ثم قم بتنفيذه.
codeString عبارة عن سلسلة تحتوي على عبارات Javascript، تم تجميعها باستخدام محرك Javascript بعد التقييم.
مثال صغير:
var the_unevaled_answer = "2 + 3";
var the_evaled_answer = eval("2 + 3");
تنبيه ("الإجابة غير المقيَّمة هي " + the_unevaled_answer + " والإجابة المقيَّمة هي " + the_evaled_answer)؛
إذا قمت بتشغيل برنامج التقييم هذا، فسترى أنه في JavaScript تم تنفيذ السلسلة "2 + 3" بالفعل. لذلك عندما تقوم بتعيين قيمة the_evaled_answer على eval("2 + 3")، ستفهم JavaScript مجموع 2 و3 وتعيده إلى the_evaled_answer.
قد يبدو هذا سخيفًا بعض الشيء، لكنه في الواقع يمكن أن يفعل أشياء مثيرة جدًا للاهتمام. على سبيل المثال، باستخدام eval يمكنك إنشاء وظائف مباشرة بناءً على مدخلات المستخدم. وهذا يسمح للبرنامج بتغيير نفسه بناءً على الوقت أو مدخلات المستخدم، ومن خلال تطبيق الاستدلالات يمكنك الحصول على نتائج مذهلة.
من الناحية العملية، نادرًا ما يتم استخدام التقييم، ولكن ربما رأيت شخصًا يستخدمه للحصول على كائنات يصعب فهرستها. إحدى مشكلات نموذج كائن المستند (DOM) هي أنه في بعض الأحيان يكون من الصعب الحصول على الكائن الذي تطلبه. على سبيل المثال، إليك دالة تسأل المستخدم عن الصورة التي يريد تحويلها: لتحويل الصورة التي ستستخدمها، استخدم الوظيفة التالية:
وظيفة مبادلة ()
{
var the_image = موجه("تغيير الببغاء أو الجبنة"،");
var the_image_object;
إذا (the_image == "الببغاء")
{
the_image_object = window.document.parrot;
}
آخر
{
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;
يقوم بتعيين كائن صورة لمتغير. على الرغم من أنها تبدو غريبة بعض الشيء، إلا أنها صحيحة نحويا. ولكن ماذا يحدث عندما يكون لديك 100 صورة بدلاً من صورتين؟ عليك أن تكتب الكثير من عبارات "إذا كان الأمر كذلك"، إذا كان من الممكن أن تكون على النحو التالي:
وظيفة مبادلة ()
{
var the_image = موجه("تغيير الببغاء أو الجبنة"،");
window.document.the_image.src = "ant.gif";
}
لسوء الحظ، ستبحث JavaScript عن صورة باسم the_image بدلاً من "cheese" أو "parrot" كما توقعت، لذلك تحصل على رسالة الخطأ: "لم أسمع عن كائن اسمه the_image."
لحسن الحظ، يمكن أن يساعدك eval في الحصول على الشيء الذي تريده.
وظيفة بسيطةSwap ()
{
var the_image = موجه("تغيير الببغاء أو الجبنة"،");
var the_image_name = "window.document + the_image."
var the_image_object = eval(the_image_name);
the_image_object.src = "ant.gif";
}
إذا قام المستخدم بملء "parrot" في مربع المطالبة، فسيتم إنشاء سلسلة في السطر الثاني، window.document.parrot ثم يعني السطر الثالث الذي يحتوي على التقييم: "أعطني الكائن window.document.parrot" - هذا هو كائن الصورة الذي تريده. بمجرد الحصول على كائن الصورة، يمكنك تعيين سمة src الخاصة به إلى ant.gif وهذا في الواقع مفيد جدًا ويستخدمه الناس كثيرًا.