Recursion in JavaScript with an IIFE

This example shows how recursion can be performed in JavaScript using an IIFE so that when you have a strung together set of workflow you don't have to go hunting for those named functions.

by Michael Perrenoud

HTML

<div id="output">

CSS

p {
    line-height: 1rem;
}

JavaScript

var $output = $('#output');

console.log = function (msg) {
    $output.append('<p>' + msg + '</p>');
}

var data = [{
    name: 'Name 1',
    value: 'Value 1',
    items: [{
        name: 'Name 1a',
        value: 'Value 1a'
    }, {
        name: 'Name 1b',
        value: 'Value 1b'
    }]
}, {
    name: 'Name 2',
    value: 'Value 2'
}, {
    name: 'Name 3',
    value: 'Value 3',
    items: [{
        name: 'Name 3a',
        value: 'Value 3a'
    }, {
        name: 'Name 3b',
        value: 'Value 3b'
    }]
}];

(function printItems(items) {
    if (!items) {
        return;
    }

    for (var i = 0; i < items.length; i++) {
        var item = items[i];
        console.log(item.name + ' - ' + item.value);
        printItems(item.items);
    }
})(data);