1. Qiita
  2. 投稿
  3. JavaScript

関数の引数名を取得する

  • 14
    いいね
  • 0
    コメント
に投稿
この記事は最終更新日から1年以上が経過しています。

AngularJSのDIとかで利用されているやつです。

関数オブジェクトのtoString()メソッドがソースコードを返すので、それを利用します。

function getParams(func) {
    var source = func.toString()
        .replace(/\/\/.*$|\/\*[\s\S]*?\*\/|\s/gm, ''); // strip comments
    var params = source.match(/\((.*?)\)/)[1].split(',');
    if (params.length === 1 && params[0] === '')
        return [];
    return params;
}

関数のソースコードを正規表現使ってゴリゴリと処理します。

getParams(function() {}); // => []
getParams(function(a) {}); // => ['a']
getParams(function(a, b) {}); // => ['a', 'b']
getParams(function(a, /* 途中に改行があっても、、、 */
b) {}); // => ['a', 'b']

こんな感じで使えるはずです。

バグとかあったら教えて下さい。

Comments Loading...