関数の定義内容をあらわす文字列を取得する

Function オブジェクトに含まれる toString メソッドを使用すると、関数の定義された内容を表す文字列表現を取得することができます。例えば文字列と関数を連結する場合など、関数の文字列表現が必要になった時に toString メソッドを使って取得できる文字列が使用されます。ここでは Function オブジェクトの toString メソッドを使って関数の定義内容をあらわす文字列を取得する方法について解説します。

(Last modified: )

関数を文字列に変換する(toString)

関数を文字列に変換するときに使用されるのが toString メソッドです。書式は次の通りです。

関数名.toString()

function キーワードを使った関数の宣言を行った場合は関数名、関数リテラルを使って関数を定義した場合は関数オブジェクトが代入された変数名に対して toString メソッドを使用すると、関数の定義された内容をあらわす文字列を返します。

では順番に試してみます。最初に関数宣言をした場合です。

function dispTotal(x, y){
  let sum = x + y;
  return sum;
}

console.log(dispTotal.toString());
>> function dispTotal(x, y){
>>   let sum = x + y;
>>   return sum;
>> }

次に関数リテラルを使用した場合です。

let dispTotal = function(x, y){
  let sum = x + y;
  return sum;
}

console.log(dispTotal.toString());
>> function(x, y){
>>   let sum = x + y;
>>   return sum;
>> }

次にアロー関数式を使用した場合です。

let dispTotal = (x, y) => {
  let sum = x + y;
  return sum;
}

console.log(dispTotal.toString());
>> (x, y) => {
>>   let sum = x + y;
>>   return sum;
>> }

最後に Function コンストラクタを使用した場合です。

let dispTotal = new Function('x', 'y', 'let sum = x + y;return sum');

console.log(dispTotal.toString());
>> function anonymous(x,y
>> ) {
>> let sum = x + y;return sum
>> }

4 つの方法でそれぞれ関数を定義したあと、関数名または関数オブジェクトを代入した変数名に対して toString メソッドを実行しました。基本的に関数を定義した内容がそのまま文字列となっていますが、 Function コンストラクタを使った場合だけ関数名として 'anonymous' を指定した関数宣言と同じ結果が帰ってきました。

-- --

Function オブジェクトの toString メソッドを使って関数の定義内容をあらわす文字列を取得する方法について解説しました。

( Written by Tatsuo Ikura )

Profile
profile_img

著者 / TATSUO IKURA

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