Evaluasi Array dengan Fungsi eval(), Bisa Apa Aja?

Evaluasi Array dengan Fungsi eval(), Bisa Apa Aja?
Photo by bruce mars / Unsplash

Kalau kamu pernah dengar fungsi eval() di JavaScript, pasti penasaran seberapa powerful fungsinya. Banyak yang bilang "jangan pakai eval() karena bahaya", tapi sebenarnya eval() tetap berguna kalau dipakai dengan hati-hati.

Nah, di artikel ini, kita bakal bahas fungsi eval(), bagaimana cara menggunakannya, dan apakah aman digunakan untuk evaluasi array.

Apa Itu eval() di JavaScript?

eval() adalah fungsi bawaan JavaScript yang bisa menjalankan kode JavaScript dalam bentuk string. Artinya, kita bisa mengubah teks menjadi kode yang dieksekusi langsung.

Sintaks Dasar

eval(string);

Contoh sederhana:

console.log(eval("2 + 2"));

Output:

4

eval() akan membaca string "2 + 2" sebagai ekspresi JavaScript dan menjalankannya.

Gunakan eval() untuk Evaluasi Array?

Kadang kita punya array dalam bentuk string dan ingin mengubahnya menjadi array yang bisa digunakan dalam kode.

1. Mengubah String Menjadi Array

Misalnya kita punya string berbentuk array:

let data = "[1, 2, 3, 4, 5]";
let hasil = eval(data);

console.log(hasil);

Output:

[1, 2, 3, 4, 5]

Sekarang hasil sudah jadi array yang bisa kita olah dengan metode array biasa.

2. Evaluasi Ekspresi Matematika dalam Array

Kita bisa menyimpan ekspresi dalam array dan menghitungnya secara dinamis.

let angka = ["5 + 5", "10 * 2", "100 / 4"];

let hasil = angka.map(expr => eval(expr));

console.log(hasil);

Output:

[10, 20, 25]

Setiap elemen array yang tadinya berupa string ekspresi sekarang berubah menjadi hasil perhitungannya.

3. Menjalankan Kode dari Array

Misalnya kita ingin menjalankan beberapa perintah dari array string.

let kode = [
  "console.log('Hello World')",
  "console.log(2 * 3)",
  "console.log('JavaScript itu seru!')"
];

kode.forEach(cmd => eval(cmd));

Output:

Hello World
6
JavaScript itu seru!

Fungsi eval() mengeksekusi setiap string di dalam array sebagai kode.

Kenapa eval() Berbahaya?

Walaupun fleksibel, eval() punya banyak risiko terutama jika digunakan dengan input yang tidak dikontrol.

Masalah Keamanan

Bayangkan ada input dari user yang dieksekusi langsung dengan eval():

let userInput = prompt("Masukkan kode JavaScript:");
eval(userInput);

Kalau user memasukkan:

alert("Anda kena hack!");

Maka browser akan menampilkan alert tanpa kontrol. Ini bisa dimanfaatkan untuk serangan keamanan.

Masalah Performa

Selain berbahaya, eval() juga lebih lambat dibanding metode lain karena:

  1. Mengubah string jadi kode setiap kali dipanggil.
  2. Tidak bisa dioptimalkan oleh JavaScript Engine.

Contoh buruk penggunaan eval():

for (let i = 0; i < 1000; i++) {
  eval("let a = 10 + 20;");
}

Lebih baik gunakan langsung:

for (let i = 0; i < 1000; i++) {
  let a = 10 + 20;
}

Jauh lebih cepat dan aman!

Alternatif eval() yang Lebih Aman

Gunakan JSON.parse() untuk Evaluasi Array

Kalau tujuan kita hanya mengubah string menjadi array, lebih baik pakai JSON.parse().

let data = "[1, 2, 3, 4, 5]";
let hasil = JSON.parse(data);

console.log(hasil);

Lebih aman dibanding eval()!

Gunakan Function() untuk Eksekusi Dinamis

Kalau perlu menjalankan kode dinamis, lebih aman pakai Function().

let kode = "return 5 + 5";
let hasil = new Function(kode)();

console.log(hasil);

Output:

10

Function() lebih cepat dan lebih aman dibanding eval().

Kesimpulan

Metode Keamanan Kecepatan Kapan Dipakai?
eval() ⚠️ Berisiko 🐌 Lambat Hanya untuk kebutuhan khusus
JSON.parse() ✅ Aman 🚀 Cepat Jika ingin mengubah string JSON jadi array
Function() ✅ Aman 🚀 Cepat Jika butuh eksekusi kode dinamis yang lebih aman

Jadi, Kapan Harus Pakai eval()?

  • Hindari eval() sebisa mungkin kecuali benar-benar butuh.
  • Jangan pernah gunakan eval() dengan input dari user.
  • Gunakan JSON.parse() untuk string array dan Function() untuk eksekusi kode yang lebih aman.

Jadi, kalau kamu mau evaluasi array atau eksekusi kode dinamis, pikir dulu alternatif lain sebelum pakai eval()!