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
878 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!

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