JavaScriptのeval()関数とは?基本構文と使い方を解説
JavaScriptのeval()関数は、引数として渡された文字列をJavaScriptのコードとして評価し、実行した結果を返す関数です。文字列形式で記述された式やステートメントを、プログラムの実行時に動的に処理できる点が大きな特徴です。
なお、引数に文字列以外(数値やオブジェクトなど)が渡された場合、eval()関数はその値を変更せずにそのまま返します。
基本構文
eval()関数の基本的な使い方は以下のとおりです。引数には、実行したいJavaScriptのコードを指定します。
eval("32*45"); // 文字列 "32*45" をコードとして評価し、1440 を返す
使用例
次のサンプルでは、数式の評価結果と、Stringオブジェクトをそのまま返す挙動を確認できます。
<html>
<head>
<title>JavaScript Example</title>
</head>
<body>
<script type="text/javascript">
document.write(eval(32*45));
document.write("<br>");
document.write(eval(new String("Hello welcome to Tutorialspoint")));
</script>
</body>
</html>
実行結果
1440 Hello welcome to Tutorialspoint
このコードでは、まず eval(32*45) によって計算結果の「1440」が出力され、続いて改行が挿入されます。次の eval(new String(...)) では、引数がプリミティブな文字列ではなくStringオブジェクトであるため、eval()はそれをコードとして評価せず、オブジェクトの内容がそのまま文字列として出力されます。
注意点:セキュリティリスク
eval()関数は任意のコードを実行できる強力な反面、悪意のあるコードの注入(インジェクション)を許してしまう危険性があります。そのため、セキュリティやパフォーマンスの観点から、実務での使用は避けるべきとされています。JSONデータの解析には JSON.parse() を使うなど、目的に応じた安全な代替手段を選択しましょう。
-
JavaScriptの関数プロトタイプとは?仕組みと使い方を解説
JavaScriptで作成されたすべての関数には、JavaScriptエンジンによって自動的にprototypeプロパティが追加されます。このprototypeプロパティはオブジェクトであり、デフォルトではconstructorプロパティを含んでいます。関数のプロトタイプには、以下のようにしてアクセスできます。functionName.prototypeコンストラクタ関数を使ってオブジェクトを生成する場合、このprototypeプロパティを活用することで、同じコンストラクタから作成された複数のオブジェクト間でメソッドやプロパティを効率的に共有することができます。これにより、各インスタンスごとに
-
JavaScriptでのメソッド借用:call()・apply()・bind()の使い方を解説
JavaScriptでは、call()、apply()、bind()という3つのメソッドを使うことで、あるオブジェクトが持つメソッドを別のオブジェクトが「借用」できます。これは、本来そのメソッドを持たないオブジェクトに対して、thisの参照先を差し替えてメソッドを実行できる便利なテクニックです。 3つのメソッドの違い call():引数をカンマ区切りで個別に渡し、即座に関数を実行します。 apply():引数を配列(または配列風オブジェクト)として渡し、即座に関数を実行します。 bind():thisを固定した新しい関数を返すだけで、即座には実行されません。返された関数は後から好きなタイミン