Rumah > hujung hadapan web > tutorial js > Bagaimana untuk Menilai Formula Rentetan dalam JavaScript Tanpa Menggunakan eval()?

Bagaimana untuk Menilai Formula Rentetan dalam JavaScript Tanpa Menggunakan eval()?

Patricia Arquette
Lepaskan: 2024-11-14 22:31:02
asal
1004 orang telah melayarinya

How to Evaluate String Formulas in JavaScript Without Using eval()?

Mengira Nilai Rentetan dalam JavaScript tanpa eval()

Menilai rentetan yang mengandungi formula ialah tugas biasa dalam pengaturcaraan. Walaupun JavaScript menawarkan fungsi eval() untuk tujuan tersebut, ia memberikan risiko keselamatan dan secara amnya tidak digalakkan. Berikut ialah pendekatan alternatif untuk mengira nilai rentetan tanpa menggunakan eval().

Menggunakan Pembina Function()

Pembina Function() boleh mencipta fungsi tanpa nama daripada rentetan. Ini boleh digunakan untuk menilai ungkapan rentetan. Sebagai contoh, pertimbangkan kod berikut:

function evil(fn) {
  return new Function('return ' + fn)();
}

console.log(evil('12/5*9+9.4*2')); // => 40.4
Salin selepas log masuk

Dengan mengembalikan fungsi baharu yang dinilai oleh pembina Function(), kita boleh melaksanakan operasi matematik yang disimpan dalam rentetan. Dalam contoh ini, rentetan "12/5*9 9.4*2" dinilai kepada 40.4.

Kelebihan Pendekatan Ini

Berbanding dengan eval(), pembina Function() membenarkan untuk :

  • Keselamatan yang dipertingkatkan: Menilai rentetan dengan pembina Function() mengelakkan potensi kelemahan keselamatan yang dikaitkan dengan eval(), yang boleh melaksanakan kod arbitrari.
  • Keselamatan jenis: Pembina Function() menyemak sintaks hujah rentetan sebelum melaksanakannya, tingkatkan keselamatan jenis.

Semasa Function() constructor menawarkan alternatif yang lebih selamat dan boleh dipercayai kepada eval(), adalah penting untuk ambil perhatian bahawa ia masih menilai kod secara dinamik, jadi langkah berjaga-jaga harus diambil untuk mengelakkan input berniat jahat.

Atas ialah kandungan terperinci Bagaimana untuk Menilai Formula Rentetan dalam JavaScript Tanpa Menggunakan eval()?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan