JSFiddle - React, Tailwind, and code Playground

HTML

<!-- Examples of when functions are considered 'equal' by JS -->

<div id="out"></div>

JavaScript

function foo() { }
var foo1a = foo;
var foo1b = foo;

var foo2 = function () {}
var foo2b = foo2;

function getFoo3s() {
    return function() {};
}

var foo3a = getFoo3s();
var foo3b = getFoo3s();

function SomeClass() {
    this.foo5 = this.foo5.bind(this);
}
SomeClass.prototype.foo4 = function () {};
SomeClass.prototype.foo5 = function () {};
var sc1 = new SomeClass();
var sc2 = new SomeClass();

function getFoo6es() {
    var ret = [];
    for (var i=0;i<3;i++) {
        ret.push(function () {});
    }
    return ret;
}
var foo6es = getFoo6es();



function out(str) {
    document.getElementById("out").innerHTML += "<div>" + str + "</div>";
}

out(foo === foo); // true - same reference
out(foo1a === foo1b); // true - same reference, same closure
out(foo2 === foo2b); // true - same reference, same closure
out(foo3a === foo3b); // false - different closure
out(SomeClass.prototype.foo4 === sc1.foo4); // true - inst doesn't overwrite proto
out(SomeClass.prototype.foo5 === sc1.foo5); // false - bind() creates a different fn each time
out(sc1.foo4 === sc2.foo4); // true - same proto ref
out(sc1.foo5 === sc2.foo5); // false - bind() creates a different fn each time
out(foo6es[0] === foo6es[1]); // FALSE - same closure, but literal is evaluated twice