Skip to content
Related Articles

Related Articles

Improve Article
Save Article
Like Article

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

  • Last Updated : 27 Sep, 2021

Given any arbitrary JavaScript function and the task is to return the parameter names of the function. 

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

Hey geek! The constant emerging technologies in the world of web development always keeps the excitement for this subject through the roof. But before you tackle the big projects, we suggest you start by learning the basics. Kickstart your web development journey by learning JS concepts with our JavaScript Course. Now at it's lowest price ever!

  • 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: 

Javascript




<script>
 
// JavaScript program to get the function
// name/values dynamically
function getParams(func) {
         
    // String representaation 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
Recommended Articles
Page :

Start Your Coding Journey Now!