JSFiddle - React, Tailwind, and code Playground

JavaScript

// public part
var publicVar = 111;
var publicFunc = function(value) { alert(value); };
var publicObject = {
    // no functions whatsoever
};

// closure part
(function(pubObj){
    // private variables and functions
    var closureVar = 222;
    var closureFunc = function(value){
        // call public func
        publicFunc(value);
        // alert private variable
        alert(closureVar);
    };

    // add functionality to public object that can now call private functionality
    pubObj.alertValues = closureFunc;

    // mind the missing "var"
    anotherPublic = 333;

})(publicObject);

// alert 111, alert 222
publicObject.alertValues(publicVar);

// try to access varaibles
alert(publicVar); // 111
alert(anotherPublic); // 333
alert(typeof(closureVar)); // undefined