Js count nested functions

342 Views Asked by At

I have got something like this below. How can I get info about how many functions are nested in the function power(). Is a Regexp going to work?

function power(n){
    function power2(){
        function power3(){
            function power4(){
                return n*n;
            }
            return power4();
        }
        return power3();
    }
    return power2();    
}
let number = power(1);
console.log(number)
2

There are 2 best solutions below

4
On

You can get the function as a string with power.toString()

Then count the amount of occurences of the word function ( -1 as the outer function is also there)

function power(n){
    function power2(){
        function power3(){
            function power4(){
                return n*n;
            }
            return power4();
        }
        return power3();
    }
    return power2();    
}
var str = power.toString();
var count = (str.match(/function/g) || []).length -1;

And a fiddle

1
On
let nested = 0;
function power(n){
    nested++;
    function power2(){
        nested++;
        function power3(){
            nested++;
            function power4(){
                nested++;
                return n*n;
            }
            return power4();
        }
        return power3();
    }
    return power2();    
}
let number = power(5);
console.log(nested)
// To exclude the main function remove nested++ right under function power(n){