Created
July 9, 2012 15:23
-
-
Save jemgold/3077150 to your computer and use it in GitHub Desktop.
IIFE
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// Either of the following two patterns can be used to immediately invoke | |
// a function expression, utilizing the function's execution context to | |
// create "privacy." | |
(function(){ /* code */ }()); // Crockford recommends this one | |
(function(){ /* code */ })(); // But this one works just as well | |
// Because the point of the parens or coercing operators is to disambiguate | |
// between function expressions and function declarations, they can be | |
// omitted when the parser already expects an expression (but please see the | |
// "important note" below). | |
var i = function(){ return 10; }(); | |
true && function(){ /* code */ }(); | |
0, function(){ /* code */ }(); | |
// If you don't care about the return value, or the possibility of making | |
// your code slightly harder to read, you can save a byte by just prefixing | |
// the function with a unary operator. | |
!function(){ /* code */ }(); | |
~function(){ /* code */ }(); | |
-function(){ /* code */ }(); | |
+function(){ /* code */ }(); | |
// Here's another variation, from @kuvos - I'm not sure of the performance | |
// implications, if any, of using the `new` keyword, but it works. | |
// http://twitter.com/kuvos/status/18209252090847232 | |
new function(){ /* code */ } | |
new function(){ /* code */ }() // Only need parens if passing arguments |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment