> For the complete documentation index, see [llms.txt](https://zurassic.gitbook.io/10x-developer/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://zurassic.gitbook.io/10x-developer/javascript/coffeescript.md).

# CoffeeScript

more coffeescript tricks: <https://gist.github.com/dfurber/993584>

### iterate

* loop array: `for item in arr` or `for item, index in arr`
* loop object: `for prop, value of obj` or `for own property, value of object` (use hasOwnProperty())

### fat arrow in coffeescript

* read [this](http://webapplog.com/understanding-fat-arrows-in-coffeescript/)
* use => when we need @ to be the object in which method is written; use-> when we need @ to be the object in which method is executed.

### String with format

```coffeescript
print = """
  1st line
  2nd line
  #{supports interpolation}
  last line
  """
```

### Instance method, variables

```coffeescript
class Songs
  _titles: 0    # instance var, Although it's directly accessible, the leading _ defines it by convention as private property.
  get_count: ->
    @_titles # access instance var
  call_another_method: ->
    return @get_count() # call another instance method
```

### How to write function as a part of parameter

```coffeescript
Router.go 'home', -> 
  this.render 'home'
, 
  name: 'h'
  old: 'b'
```

## reverse for loop

coffeescript reverse for loop: `for i in [arr.length-1..0] by -1` [iterations in coffeescript](http://discontinuously.com/2012/05/iteration-in-coffeescript/)
