How JavaScript Closures and IIFEs Work