eval関数(文字列として指定したコードを実行する)

JavaScript のグローバル関数のひとつである eval は文字列として引数に指定された JavaScript のコードを実行します。ここでは eval 関数の使い方について解説します。

(Last modified: )

eval関数の使い方

グローバル関数のひとつである eval 関数は、引数に文字列として指定した JavaScript のコードを実行します。書式は次の通りです。

eval(実行するコード)

引数には文字列として式や文を記述します。 eval 関数は最後に評価した式の値を戻り値として返します。

次のサンプルをみてください。

let str = 'x * y + 10';
let x = 8;
let y = 5;
let z = eval(str);

console.log(z);
>> 50

eval 関数が実行されると、引数に指定した文字列で表された式が評価されます。評価された結果は変数 z に代入されます。

同じようなサンプルですが、少し変更しました。

let str = 'z = x * y + 10;console.log(z)';
let x = 8;
let y = 5;
let z;

eval(str);
>> 50

eval 関数が実行されると、引数に指定した文字列で表されたコードが実行されます。変数 z に演算を行った結果が代入され、そのあとでコンソールに対して変数 z の値が出力されます。

このように eval 関数を使用することで、引数に指定した文字列で表された式を評価したり文を実行したりすることができます。

eval 関数は現在あまり使われなくなっていますが、過去には文字列で表された JSON のテキストをオブジェクトとして変換する場合に使用されていたようです。

let json = "{'name':'Yamada', 'old':'28'}";
let obj = eval('(' + json + ')');

eval(obj);
>> 50

eval関数を使用するときの注意点

eval 関数は引数に指定した文字列で表されたコードを実行できる関数のため、他のユーザーが入力した値を文字列として受け取り eval 関数に渡すような処理を記述するのは大変危険です。他のユーザーが入力した任意のコードを実行できてしまいます。

他にも実行速度が遅いといったデメリットもあり、また現在は eval 関数の代替手段も用意されているケースがあるため eval 関数はあまり使用されることはないようです。

ただ使ってはいけないということではないので、先ほどのっ危険性を十分考慮した上で必要であれば使用されてみてください。

-- --

eval 関数の使い方について解説しました。

( Written by Tatsuo Ikura )

Profile
profile_img

著者 / TATSUO IKURA

プログラミングや開発環境構築の解説サイトを運営しています。