JavaScript memiliki banyak trik kecil untuk membuat pemrograman lebih mudah. Salah satunya adalah fungsi eval(), yang memperlakukan string sebagai ekspresi JavaScript dan mengeksekusinya. Berikut penjelasannya.
Fungsi fungsi Eval: pertama interpretasikan kode Javascript, lalu jalankan.
codeString adalah string yang berisi pernyataan Javascript, dikompilasi menggunakan mesin Javascript setelah eval.
Contoh kecil:
var the_unevaled_answer = "2 + 3";
var the_evaled_answer = eval("2 + 3");
alert("jawaban yang tidak dievaluasi adalah " + the_unevaled_answer + " dan jawaban yang dievaluasi adalah " + the_evaled_answer);
Jika Anda menjalankan program eval ini, Anda akan melihat bahwa dalam JavaScript string "2 + 3" sebenarnya Dieksekusi. Jadi ketika Anda menyetel nilai the_evaled_answer ke eval("2 + 3"), JavaScript akan memahami dan mengembalikan jumlah 2 dan 3 ke the_evaled_answer.
Ini mungkin tampak agak konyol, tetapi sebenarnya dapat memberikan manfaat yang sangat menarik. Misalnya, dengan menggunakan eval Anda dapat membuat fungsi secara langsung berdasarkan masukan pengguna. Hal ini memungkinkan program untuk mengubah dirinya sendiri berdasarkan waktu atau masukan pengguna, dan dengan menerapkan kesimpulan Anda bisa mendapatkan hasil yang luar biasa.
Dalam praktiknya, eval jarang digunakan, tetapi mungkin Anda pernah melihat seseorang menggunakannya untuk mendapatkan objek yang sulit diindeks. Salah satu masalah dengan Model Objek Dokumen (DOM) adalah terkadang sulit mendapatkan objek yang Anda minta. Misalnya, berikut adalah fungsi yang menanyakan pengguna gambar mana yang akan diubah: Untuk mengubah gambar mana Anda akan menggunakan fungsi berikut:
fungsi swapOne()
{
var the_image = prompt("ganti burung beo atau keju","");
var the_image_object;
if (the_image == "burung beo")
{
the_image_object = jendela.dokumen.parrot;
}
kalau tidak
{
the_image_object = window.document.cheese;
}
the_image_object.src = "ant.gif";
}
Bersama dengan tag gambar ini:
<img src="/stuff3a/parrot.gif" nama="burung beo" />
<img src="/stuff3a/cheese.gif" name="keju">
Harap perhatikan beberapa baris seperti ini:
the_image_object = window.document.parrot;
Ini menetapkan objek gambar ke variabel. Meski terlihat agak aneh, namun secara tata bahasa benar. Namun apa yang terjadi jika Anda memiliki 100 gambar, bukan dua? Anda harus menulis banyak pernyataan if-then-else, andai saja bisa seperti ini:
fungsi swapDua()
{
var the_image = prompt("ganti burung beo atau keju","");
window.document.the_image.src = "ant.gif";
}
Sayangnya, JavaScript akan mencari gambar bernama the_image dan bukannya "keju" atau "parrot" seperti yang Anda harapkan, sehingga Anda mendapatkan pesan kesalahan: "Belum pernah mendengar tentang objek bernama the_image."
Untungnya, eval dapat membantu Anda mendapatkan objek yang Anda inginkan.
fungsi SimpleSwap()
{
var the_image = prompt("ganti burung beo atau keju","");
var the_image_name = "jendela.dokumen." + the_image;
var the_image_object = eval(the_image_name);
the_image_object.src = "ant.gif";
}
Jika pengguna mengisi "parrot" di kotak prompt, string dibuat di baris kedua, window.document.parrot. Kemudian baris ketiga yang berisi eval berarti: "Beri saya objek window.document.parrot" - Yaitu objek gambar yang Anda inginkan. Setelah Anda mendapatkan objek gambar, Anda dapat mengatur atribut src-nya menjadi ant.gif. Ini sebenarnya cukup berguna dan banyak orang yang menggunakannya.