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
DDDasal
2024-12-08 08:27:14251semak imbas

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 });

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');

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);
}

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!

Kenyataan:
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