##基礎
###変数の宣言
string = 'abc'
float = 123
boolean = true
varとセミコロンが消えます
###コメント
# 1行のコメント
###
複数行のコメント複数行のコメント複数行のコメント複数行のコメント複数行のコメント複数行のコメント複数行のコメント複数行のコメント複数行のコメント複数行のコメント複数行のコメント複数行のコメント複数行のコメント複数行のコメント複数行のコメント複数行のコメント複数行のコメント複数行のコメント複数行のコメント複数行のコメント複数行のコメント複数行のコメント複数行のコメント複数行のコメント複数行のコメント複数行のコメント
###
###配列
array = [
'aaa'
'bbb'
'ccc'
]
カンマの代わりに改行を使う
###オブジェクト
obj = {
a: 111
b: 222
c: 333
}
配列と同様にカンマの代わりに改行を使う
###制御文
val = 10
if val is 10
console.log '10'
else
console.log 'not 10'
条件式を()でくくらない、if文の中身を{}でくくらない
array = [
a
b
c
]
for string in array
console.log string
###関数
test = ->
console.log 'test'
test変数に無名関数を代入することで、test関数として実行できるようになる。
number = '2'
test = (number)->
console.log 'test' + number
test(number)
引数を指定したい場合は ->の前に()をつけ、引数を指定します。
###->と=>の違い
class Hello
constructor: (@name) ->
result = $('#result')
result.on 'click', ->
alert 'こんにちは'+@name
h = new Hello('Aさん')
これの結果は、こんにちはundefinendになってしまいます。原因は、初めの@はオブジェクト自身を指しているが、次の@はイベントの発生元である、要素オブジェクトを指しているからです。
この問題を解消するのが=>です。これを使うと=>の外側で使っている@をそのまま関数の内側でも使えるようになります。