์ด ๋ฌธ์์ ์๋ณธ์ ์ธ๋ถ ์ํค์์ ๊ฐ์ ธ์์ต๋๋ค.
#!syntax coffeescript
alert "Hello, World!" # alert ๋ฐฉ์
document.write "Hello, world!" # ๋ฌธ์์ ์ฐ๋ ๋ฐฉ์.
console.log "Hello, world!" # ์ฝ์ ๋ฐฉ์
1. ๊ฐ์[ํธ์ง]
๊ณต์ ์ฌ์ดํธ
์๋ฐ์คํฌ๋ฆฝํธ๋ก ์ปดํ์ผ ๋๋ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด. npm์ coffee-script ๋ชจ๋์ ํตํด Node.js์์๋ ์ฌ์ฉํ ์ ์๋ค. Backbone.js๊ณผ underscore.js ๋ฑ์ ๋ง๋ ์๋ฐ์คํฌ๋ฆฝํธ ์ง์์ ์ ๋ช ํ ๊ฐ๋ฐ์ Jeremy Ashkenas๊ฐ ๊ฐ๋ฐํ๋ค.
์๋ฐ์คํฌ๋ฆฝํธ๋ก ์ปดํ์ผ ๋๋ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด. npm์ coffee-script ๋ชจ๋์ ํตํด Node.js์์๋ ์ฌ์ฉํ ์ ์๋ค. Backbone.js๊ณผ underscore.js ๋ฑ์ ๋ง๋ ์๋ฐ์คํฌ๋ฆฝํธ ์ง์์ ์ ๋ช ํ ๊ฐ๋ฐ์ Jeremy Ashkenas๊ฐ ๊ฐ๋ฐํ๋ค.
2. ํน์ง[ํธ์ง]
- Assignment
#!syntax coffeescript
number = 42
opposite = true
- Conditional Assignment
#!syntax coffeescript
number = -42 if opposite
- Function
coffeescript ๋ด ๋ชจ๋ ํจ์๋ ์๋์ ๊ฐ์ด ์์ฑ๋๋ค.
function keyword๋ ๋ ์ด์ ํ์๊ฐ ์๋ค.#!syntax coffeescript
square = (x) -> x * x
cube = (x) -> x * square x
sqrt = (x) -> Math.sqrt(x)
cbrt = (x) ->
v = x
for i in [1...32]
v *= v
v *= v
v *= x
v = sqrt sqrt v
x = sqrt sqrt x
sqrt sqrt v
alert cbrt 8
alert Math.cbrt 8
- Object
YAML์ ๋น์ทํ ๋ชจ์์ ๋๊ณ ์๋ค. ์๋์ ๊ฐ์ด ์ ์๋ ๋ชจ๋ ์ฝ๋๋
{... Object ๋ก ๋ณํ๋๋ค.#!syntax coffeescript
some =
a: 123
b: 1232
# m/s^2
gravity =
sun: 274.0
jupiter: 24.79
saturn: 10.445
uranus: 8.87
neptune: 11.15
earth: 99.80665
venus: 8.872
mars: 3.7
mercury: 3.7
moon: 1.625
pluto: 0.61
math = ->
square: (x) -> x * x
tan: (x) -> Math.tan(x)
csc: (x) -> 1 / Math.sin(x)
- Existential Operator
#!syntax coffeescript
alert "์ ๋ถ๋ฌ" if elvis?
if window.addEventListener?
document.addEventListener("DOMContentLoaded", ->)
else
document.attachEvent("onreadystatechange", ->)
- Array comprehension
#!syntax coffeescript
map = (fn, src) ->
fn v for v in src
reduce = (fn, src, v) ->
if !len src
return v
if v?
[v, src...] = src
v = fn v, w for w in src
v
filter = (fn, src) ->
v for v in src when !!fn v
dropwhile = (fn, src) ->
v for v in src when !fn v
zip = (iters...) ->
c = Number.MAX_SAFE_INTEGER
c = u for iter in iters when c > (u = len iter)
iter[i] for iter in iters for i in [0...c]
len = (x) -> x.length
concepts = [
"branch"
"prediction"
"speculative"
"execution"
]
alert map len, concepts
3. ์ฌ๋ด[ํธ์ง]
- ์๋ฐ์คํฌ๋ฆฝํธ์ ๋นํด ๋ฌธ๋ฒ์ด ๊ฐ๊ฒฐํ์ฌ ๋ง์ ๊ฐ๋ฐ์๋ค์ ์ฌ๋์ ๋ฐ์์ง๋ง ์์ํ ์ ๋ฌผ๊ณ ์๋ ์ค์ด๋ค. 2016๋ Stack Overflow ๊ฐ๋ฐ์ ์ค๋ฌธ์์ ์ ๋ฌผ๊ณ ์๋ ๊ธฐ์ 3์๋ฅผ ์ฐจ์งํ๋ค.[1] ์๋ฌด๋๋ ์ต์ ์๋ฐ์คํฌ๋ฆฝํธ ๋ฌธ๋ฒ์ ์ง์ํ์ง ์๊ณ , ๊ฒฝ์์์ธ TypeScript๊ฐ ์ ๋๊ฐ๊ณ ์๊ธฐ ๋๋ฌธ์ธ๋ฏ ํ๋ค.