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);