Coffeescript --- Как создать самозапускающуюся анонимную функцию?

Как записать это в coffeescript?

f = (function(){
   // something
})();

Спасибо за любые советы:)

Ответ 1

Хотя вы можете просто использовать круглые скобки (например, (-> foo)(), вы можете избежать их с помощью ключевого слова do:

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

Наиболее частое использование do - это захват переменных в цикле. Например,

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

Без do вы просто будете печатать значение x после цикла 3 раза.

Ответ 2

Если вы хотите "псевдоним" аргументы, переданные функции self-invoking в CoffeeScript, и пусть это именно то, чего вы пытаетесь достичь:

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

Тогда do (window, document) -> не позволит вам это сделать. Путь идти идет с парнерами тогда:

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

Ответ 3

Это смешно легко в кофе:

do ->

вернет

(function() {})();

Ответ 4

попробуйте использовать

do ($ = jQuery) ->

Ответ 5

Вы также можете комбинировать ключевое слово do с параметрами функции по умолчанию, чтобы вырезать рекурсивные "самоинициализирующие функции" с начальным значением. Пример:

do recursivelyPrint = (a=0) ->
  console.log a
  setTimeout (-> recursivelyPrint a + 1), 1000

Ответ 6

do ->
    #your stuff here

Это создаст самозавершающее закрытие, которое полезно для определения области видимости.

Ответ 7

Извиняюсь, я решил:

f = (
    () -> "something"
)()

Ответ 8

Это должно быть

f = () ->
  # do something