JSFiddle - React, Tailwind, and code Playground

HTML

<div>
</div>

JavaScript

(function() {
    var proxy = console.log;
    console.log = function(str) {
        var pre = document.createElement('pre');
        var div = document.getElementsByTagName('div')[0];
        pre.innerText = str;
        div.appendChild(pre);
        proxy.call(this, str);
    };
})();

function A() {
    console.log("I'm function A");

    function B() {
        console.log("I'm function B");
        C();
    }
    B();
}

function C() {
    console.log("I'm function C");
}

A();

// or
console.log('or');

function A() {
    console.log("I'm function A");
    (function B() {
        console.log("I'm function B");
        C();
    })();
}

function C() {
    console.log("I'm function C");
}

A();

// or
console.log('or');

function A() {
    console.log("I'm function A");
    (function B(callback) {
        console.log("I'm function B");
        callback();
    })(C);
}

function C() {
    console.log("I'm function C");
}

A();

//or
console.log('or');

(function A() {
    console.log("I'm function A");
    (function B(callback) {
        console.log("I'm function B");
        callback();
    })(C);
})()

function C() {
    console.log("I'm function C");
}

//or 
console.log('or');

(function A(callback) {
    console.log("I'm function A");
    (function B(callback) {
        console.log("I'm function B");
        callback();
    })(callback);
})(C)

function C() {
    console.log("I'm function C");
}

//or
console.log('or');

(function A(callback) {
    console.log("I'm function A");
    (function B(callback) {
        console.log("I'm function B");
        callback();
    })(callback);
})(function C() {
    console.log("I'm function C");
})