ホームページ  >  記事  >  ウェブフロントエンド  >  Eval() を使用せずに JavaScript で文字列式を安全に評価するにはどうすればよいでしょうか?

Eval() を使用せずに JavaScript で文字列式を安全に評価するにはどうすればよいでしょうか?

Susan Sarandon
Susan Sarandonオリジナル
2024-11-13 08:00:02171ブラウズ

How Can You Safely Evaluate String Formulas in JavaScript Without Using Eval()?

Eval を使用しない JavaScript の文字列値の評価

JavaScript の eval() 関数はセキュリティ リスクをもたらし、コード インジェクションにつながる可能性があります。これらの問題を回避するには、数式文字列を評価するための代替メソッドを検討することをお勧めします。

そのような代替メソッドの 1 つは、コード文字列を評価して結果を返すことができる Function() コンストラクターです。たとえば、次の文字列式を考えてみましょう:

var apa = "12/5*9+9.4*2";

eval(apa) を使用する代わりに、Function() コンストラクターを使用して、式を表す新しい関数を作成できます:

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

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

Function() コンストラクターはコード文字列を引数として受け取り、関数オブジェクトを返します。文字列内の return ステートメントにより、式の結果が確実に返されます。 console.log() 関数は評価結果を表示します。

Function() コンストラクターの使用は、文字列から任意のコードを実行しないため、eval() のより安全な代替手段です。これは、JavaScript で文字列式を評価するための、より制御された予測可能な方法を提供します。

以上がEval() を使用せずに JavaScript で文字列式を安全に評価するにはどうすればよいでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。