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

Bagaimana untuk Menilai Formula Rentetan dengan Selamat dalam JavaScript Tanpa `eval()`?

Susan Sarandon
Lepaskan: 2024-11-16 16:50:03
asal
808 orang telah melayarinya

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

Mengira Nilai Rentetan dalam JavaScript tanpa eval()

Masalah:
Ramai pembangun JavaScript menggunakan eval () berfungsi untuk mengira formula yang disimpan dalam rentetan. Walau bagaimanapun, eval() adalah tidak selamat, kerana ia boleh melaksanakan kod sewenang-wenangnya. Adakah terdapat alternatif yang selamat?

Jawapan:
Ya, anda boleh menggunakan pembina Function() untuk menilai rentetan yang mengandungi formula dengan selamat.

Kod :

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

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

Penjelasan:

Pembina Function() mengambil rentetan sebagai hujah dan mengembalikan fungsi. Kata kunci 'kembali' ditambahkan pada permulaan rentetan untuk memastikan fungsi menilai kepada hasil formula.

Kelebihan:

  • Keselamatan : Kaedah ini menghalang pelaksanaan kod berniat jahat dengan mengehadkan penilaian kepada rentetan formula.
  • Kebolehpercayaan: Tidak seperti eval(), pembina Function() sentiasa mengembalikan hasil formula, tanpa mengira sintaks atau pembolehubah digunakan.

Atas ialah kandungan terperinci Bagaimana untuk Menilai Formula Rentetan dengan Selamat dalam JavaScript Tanpa `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