Thursday, September 4, 2025
HomeLanguagesJavascriptHow to get the javascript function parameter names/values dynamically ?

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

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




// JavaScript program to get the function
// name/values dynamically
function getParams(func) {
 
    // String representation of the function code
    let 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 '('
    let start = str.indexOf("(") + 1;
 
    // End parameter names is just before last ')'
    let end = str.length - 1;
 
    let result = str.substring(start, end).split(", ");
 
    let 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
let fun1 = function (a) { };
 
function fun2(a = 5 * 6 / 3,
b) { };
 
let 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));


Output

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

Most Popular

Dominic
32264 POSTS0 COMMENTS
Milvus
81 POSTS0 COMMENTS
Nango Kala
6629 POSTS0 COMMENTS
Nicole Veronica
11799 POSTS0 COMMENTS
Nokonwaba Nkukhwana
11858 POSTS0 COMMENTS
Shaida Kate Naidoo
6749 POSTS0 COMMENTS
Ted Musemwa
7025 POSTS0 COMMENTS
Thapelo Manthata
6698 POSTS0 COMMENTS
Umr Jansen
6716 POSTS0 COMMENTS