首頁  >  文章  >  web前端  >  如何在沒有「eval()」的情況下安全地計算 JavaScript 中的字串公式?

如何在沒有「eval()」的情況下安全地計算 JavaScript 中的字串公式?

Susan Sarandon
Susan Sarandon原創
2024-11-16 16:50:03727瀏覽

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

在沒有eval() 的情況下計算JavaScript 中的字串值

問題:

問題:

問題:

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

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

問題:

許多JavaScript 開發人員使用eval () 函數計算儲存在字串中的公式。然而,eval() 是不安全的,因為它可以執行任意程式碼。有安全的替代方案嗎?

答案:

是的,您可以使用 Function() 建構子安全地計算包含公式的字串。
  • 程式碼:
解釋:Function() 建構子接受一個字串作為參數並傳回一個函數。將“return”關鍵字新增至字串的開頭,以確保函數計算結果為公式的結果。 優點:安全性:此方法透過將計算限制為公式字串來防止惡意程式碼的執行。 可靠性:與 eval() 不同,Function() 建構子總是會傳回公式的結果,無論語法或變數如何使用過。

以上是如何在沒有「eval()」的情況下安全地計算 JavaScript 中的字串公式?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn