stack size

Level or recursion depending on amount of local variables

HTML

<script src="http://www.chartjs.org/assets/Chart.js"></script>
<div id="result"></div>
<canvas id="chart" width="400" height="400"></canvas>

CSS

#result {
    font-family:'Helvetica Neue', 'Helvetica', 'Arial', sans-serif;
}

JavaScript

var levels = [],
    labels = [],
    level = 0;

var recurse0 = function () {
    level++;
    recurse0();
};

var levelFns = [

recurse0,

function recurse1(fn) {
    level++;
    fn(fn);
},

function recurse2(fn) {
    var a1 = 1;
    level++;
    fn(fn);
},

function recurse3(fn) {
    var a1 = 1,
        a2 = 2;
    level++;
    fn(fn);
},

function recurse4(fn) {
    var a1 = 1,
        a2 = 2,
        a3 = 3;
    level++;
    fn(fn);
}];

for (var i = 0; i < levelFns.length; i++) {
    var fn = levelFns[i];
    try {
        level = 0;
        fn(fn);
    } catch (e) {
        levels[i] = level;
        labels[i] = '' + i;
    }
}

var result = document.getElementById('result');
result.innerHTML = 'Recursion levels: ' + levels.join(', ');

var data = {
    labels: labels,
    datasets: [{
        //label: "dataset",
        fillColor: "rgba(151,187,205,0.2)",
        strokeColor: "rgba(151,187,205,1)",
        pointColor: "rgba(151,187,205,1)",
        pointStrokeColor: "#fff",
        pointHighlightFill: "#fff",
        pointHighlightStroke: "rgba(151,187,205,1)",
        data: levels
    }]
};

var options = {
    animation: false
};

var ct = document.getElementById('chart').getContext('2d');
var chartObject = new Chart(ct).Line(data, options);