JavaScript

グローバル オブジェクトの

eval() 関数


編集:2023.01.23 by T.A.

指定の文字列を JavaScript コードとして評価します。

警告: 文字列から JavaScript を実行することは、非常に大きなセキュリティ リスクを伴います。eval() を使用すると、悪意のある者が任意のコードを実行するのはあまりにも簡単です。

構文
eval(string)
string JavaScript の式、文を表す文字列です。
戻り値

string が式だった場合はその評価結果を。文だった場合は undefined。

eval() を使わないでください!/mdn

eval() は呼び出し元の権限で渡されたコードを実行する危険な関数です。悪意のある第三者に影響を受ける可能性のある文字列で eval() を実行すると、あなたのウェブページ/拡張機能の権限でユーザーのマシン上で悪意のあるコードを実行してしまう可能性があります。さらに重要なことに、サードパーティのコードは eval() が呼び出されたスコープを見ることができるので、類似の、Function では影響を受けない方法でも攻撃を受ける可能性があります。

D=eval("2 + 2");  //=[number]:4
D=eval(new String("2 + 2"));  //=[object]:2 + 2
	//0=[string]:2
	//1=[string]:
	//2=[string]:+
	//3=[string]:
	//4=[string]:2
DA=new String("2 + 2");
D=eval(DA.toString());  //=[number]:4
D=eval(String("2 + 2"));  //=[number]:4

//文と見なされる:
D=eval("2+2; alert(10)");
	//「10」が表示され、
	//=[undefined]:undefined
	//が、返される。

//eval() より良い方法:
D=Function("return 2 + 2")();  //=[number]:4

テスト