커피에 대한 내용은 커피 문서 참고하십시오.
alert "Hello, World!" # alert 방식 document.write "Hello, world!" # 문서에 쓰는 방식 console.log "Hello, world!" # 콘솔 방식
1. 개요
커피스크립트(CoffeeScript)는 자바스크립트로 컴파일 되는 프로그래밍 언어이다. npm의coffee-script
모듈을 통해 Node.js에서도 사용할 수 있다. Backbone.js과 underscore.js 등을 만든 자바스크립트 진영의 유명한 개발자 Jeremy Ashkenas가 개발했다.2. 특징
- Assignment
{{{#!syntax javascript
opposite = true
}}}
- Conditional Assignment
{{{#!syntax python
}}}
- Function
coffeescript 내 모든 함수는 아래와 같이 작성된다.function
키워드는 더 이상 필요가 없다.
{{{#!syntax python
cube = (x) -> x * square x
sqrt = (x) -> Math.sqrt(x)
cbrt = (x) ->
v = x
for i in [1...32]
for i in [1...32]
v *= v
v *= v
v *= x
v = sqrt sqrt v
x = sqrt sqrt x
sqrt sqrt vv *= v
v *= x
v = sqrt sqrt v
x = sqrt sqrt x
alert cbrt 8
alert Math.cbrt 8
}}}
- Object
YAML과 비슷한 모양을 띄고 있다. 아래와 같이 정의된 모든 코드는{...
Object로 변환된다.
{{{#!syntax python
a: 123
b: 1232
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
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)
}}}tan: (x) -> Math.tan(x)
csc: (x) -> 1 / Math.sin(x)
- Existential Operator
{{{#!syntax python
if window.addEventListener?
document.addEventListener("DOMContentLoaded", ->)
else
document.attachEvent("onreadystatechange", ->)
}}}
- Array comprehension
{{{#!syntax python
fn v for v in src
reduce = (fn, src, v) ->
if !len src
v
return v
if v?[v, src...] = src
v = fn v, w for w in srcv
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]
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"
]"prediction"
"speculative"
"execution"
alert map len, concepts
}}}
3. 기타
- Node.js에서 은근히 많이 쓰인다. 이유는 아무래도 npm의 커피스크립트 모듈 때문인 듯하다.
- JavaScript에 비해 문법이 간결하여 많은 개발자들의 사랑을 받았지만 서서히 저물고 있는 중이다. 2016년 Stack Overflow 개발자 설문에서 저물고 있는 기술 3위를 차지했다.[1] 아무래도 최신 JavaScript 문법을 지원하지 않고, 경쟁자인 TypeScript가 잘 나가고 있기 때문인 듯하다.