何が危険なのか
evalやnew Functionは、文字列をJavaScriptのコードとして実行します。外部から来た文字列を実行すると、任意のコードが動くため、XSSなどの原因になります。実行してよいのは、自分たちで用意した式だけです。
evalとnew Functionの違い
evalは呼び出し元のローカル変数に触れますが、new Functionはグローバルスコープでのみ動きます。そのため、new Functionの方が影響範囲は小さくなりますが、危険がなくなるわけではありません。
代替手段とCSP
式を自前でパースして四則演算だけ実行する方法や、あらかじめ用意した関数の表から選ぶ方法があります。Content Security Policy(CSP)のscript-srcで「unsafe-eval」を許可しなければ、ブラウザ側で実行を止められます。