The first does not use the ad keyword, so it f1will become global (which defeats the IIFE goal). But this is the legitimate expression syntax — a function can be called, and the result (if any) can be assigned f1. Please note that this will not work with use strict.
The second setback is because this is invalid IIFE syntax - this declaration , , .
(var f1 = function(){console.log('IIFE Block2')})()
Hide result