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

Bagaimana untuk Menilai Ungkapan Matematik dengan Selamat dalam JavaScript Tanpa Menggunakan `eval()`?

DDD
Lepaskan: 2024-12-08 08:27:14
asal
256 orang telah melayarinya

How to Safely Evaluate Mathematical Expressions in JavaScript Without Using `eval()`?

Menilai Ungkapan Matematik dalam JavaScript Tanpa Menggunakan Eval()

Menilai ungkapan matematik tanpa menggunakan fungsi eval() yang berpotensi berbahaya adalah perkara biasa tugas dalam pengaturcaraan JavaScript. Untuk menangani perkara ini, mari kita terokai beberapa penyelesaian alternatif.

JavaScript Expression Evaluator

Pustaka Penilai Ungkapan JavaScript menyediakan cara yang mudah untuk menghuraikan dan menilai ungkapan matematik. Ia membolehkan anda menentukan rentetan ungkapan dan menggunakan pembolehubah untuk menyesuaikan penilaian. Sebagai contoh, kod berikut menilai ungkapan "2 ^ x" dengan x sama dengan 3:

const result = Parser.evaluate("2 ^ x", { x: 3 });
Salin selepas log masuk

Math.js

Math.js ialah satu lagi popular Pustaka JavaScript untuk operasi matematik. Ia termasuk penghurai ungkapan yang berkuasa yang menyokong pelbagai fungsi matematik. Seperti Penilai Ungkapan JavaScript, ia membolehkan anda melepasi pembolehubah dan menilai ungkapan secara dinamik:

const result = math.eval('sin(45 deg) ^ 2');
Salin selepas log masuk

Syor Pengguna

Pengguna lain telah mencadangkan respons pada Stack Overflow yang menggunakan fungsi evalx() untuk menilai ungkapan matematik dengan selamat. Berikut ialah coretan daripada jawapan itu:

function evalx(expr, scope) {
  return Function(`'use strict'; return (${expr})`)()(...scope);
}
Salin selepas log masuk

Dengan memanggil fungsi evalx(), anda boleh menilai ungkapan tanpa risiko keselamatan yang dikaitkan dengan eval().

Atas ialah kandungan terperinci Bagaimana untuk Menilai Ungkapan Matematik dengan Selamat 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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan