Coffeescript --- How to create a self-initiating anonymous function? Coffeescript --- How to create a self-initiating anonymous function? javascript javascript

Coffeescript --- How to create a self-initiating anonymous function?


While you can just use parentheses (e.g. (-> foo)(), you can avoid them by using the do keyword:

do f = -> console.log 'this runs right away'

The most common use of do is capturing variables in a loop. For instance,

for x in [1..3]  do (x) ->    setTimeout (-> console.log x), 1

Without the do, you'd just be printing the value of x after the loop 3 times.


If you want to "alias" the arguments passed to self-invoking function in CoffeeScript, and let's say this is what you are trying to achieve:

(function ( global, doc ) {  // your code in local scope goes here})( window, document );

Then do (window, document) -> won't let you do that. The way to go is with parens then:

(( global, doc ) ->   # your code here)( window, document ) 


it's ridiculous easy in coffee:

do ->

will return

(function() {})();