Last Updated: February 25, 2016
· jonabrams

Quick self-invocting functions with CoffeeScript

If you need to declare a self calling function in CoffeeScript, it's super easy, just do it:

message = "but stay safe"
do ->
  message = "take chances"
  alert message
alert message

# Outputs "takes chances" then "but stay safe"

This gets super useful when you need to freeze a variable, like when in a for loop and using setTimeout, just pass in the variable:

for person in group
  do (person) ->
    setTimeout ->
      # A bunch of work using person
    , 0

Without the call do (person) -> the function called by setTimeout would only use the last person in the group.