Skip to content
Related Articles
Open in App
Not now

Related Articles

How to get the javascript function parameter names/values dynamically ?

Improve Article
Save Article
  • Last Updated : 26 Dec, 2022
Improve Article
Save Article

In this article, we are given any arbitrary JavaScript function and the task is to return the parameter names of the function. 

Approach: JavaScript contains a method called .toString() which is used to represent a function code in its string representation. This method is used to get the parameter names/values. 

  • First, get the function’s code to its string equivalent using toString() method.
  • Then remove all the unnecessary codes like comments, function body, white spaces, and ES6 arrow (if any).
  • Identify the first occurrence of ‘(‘, it will be just before the starting of parameters.
  • The last character of the string will be ‘)’ which removes all comments, function body, white spaces, and ES6 arrow.
  • Also, the last character will be just after the end of the parameters.

Example: This example explains the above-explained approach.

Javascript




<script>
    // JavaScript program to get the function
    // name/values dynamically
    function getParams(func) {
              
        // String representation of the function code
        var str = func.toString();
      
        // Remove comments of the form /* ... */
        // Removing comments of the form //
        // Remove body of the function { ... }
        // removing '=>' if func is arrow function 
        str = str.replace(/\/\*[\s\S]*?\*\//g, '') 
                .replace(/\/\/(.)*/g, '')         
                .replace(/{[\s\S]*}/, '')
                .replace(/=>/g, '')
                .trim();
      
        // Start parameter names after first '('
        var start = str.indexOf("(") + 1;
      
        // End parameter names is just before last ')'
        var end = str.length - 1;
      
        var result = str.substring(start, end).split(", ");
      
        var params = [];
      
        result.forEach(element => {
              
            // Removing any default value
            element = element.replace(/=[\s\S]*/g, '').trim();
      
            if(element.length > 0)
                params.push(element);
        });
          
        return params;
    }
      
    // Test sample functions
    var fun1 = function(a){ };
      
    function fun2(a = 5*6/3, // Comment
        b){ };
      
    var fun3 = (a, /*
        */
        b, //comment
        c) => /** */{ };
      
    console.log(`List of parameters of ${fun1.name}:`, getParams(fun1));
    console.log(`List of parameters of ${fun2.name}:`, getParams(fun2));
    console.log(`List of parameters of ${fun3.name}:`, getParams(fun3));
</script>

Output: 

List of parameters:
List of parameters of fun1: [ 'a' ]
List of parameters of fun2: [ 'a', 'b' ]
List of parameters of fun3: [ 'a', 'b', 'c' ]

My Personal Notes arrow_drop_up
Related Articles

Start Your Coding Journey Now!