최근 수정 시각 : 2024-01-12 13:02:24

CoffeeScript


파일:나무위키+유도.png  
은(는) 여기로 연결됩니다.
커피에 대한 내용은 커피 문서
번 문단을
부분을
, 에 대한 내용은 문서
번 문단을
번 문단을
부분을
부분을
, 에 대한 내용은 문서
번 문단을
번 문단을
부분을
부분을
, 에 대한 내용은 문서
번 문단을
번 문단을
부분을
부분을
, 에 대한 내용은 문서
번 문단을
번 문단을
부분을
부분을
, 에 대한 내용은 문서
번 문단을
번 문단을
부분을
부분을
, 에 대한 내용은 문서
번 문단을
번 문단을
부분을
부분을
, 에 대한 내용은 문서
번 문단을
번 문단을
부분을
부분을
, 에 대한 내용은 문서
번 문단을
번 문단을
부분을
부분을
, 에 대한 내용은 문서
번 문단을
번 문단을
부분을
부분을
참고하십시오.

1. 개요2. 특징3. 기타


파일:CoffeeScript 로고.svg

#!syntax python
alert "Hello, World!" # alert 방식
document.write "Hello, world!" # 문서에 쓰는 방식.
console.log "Hello, world!" # 콘솔 방식

1. 개요

파일:홈페이지 아이콘.svg

자바스크립트로 컴파일 되는 프로그래밍 언어. npm의 coffee-script 모듈을 통해 Node.js에서도 사용할 수 있다. Backbone.js과 underscore.js 등을 만든 자바스크립트 진영의 유명한 개발자 Jeremy Ashkenas가 개발했다.

2. 특징

  • Assignment
#!syntax javascript
number = 42
opposite = true
  • Conditional Assignment
#!syntax python
number = -42 if opposite
  • Function
coffeescript 내 모든 함수는 아래와 같이 작성된다. function keyword는 더 이상 필요가 없다.
#!syntax python
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 python
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 python
alert "왜 불러" if elvis?

if window.addEventListener?
	document.addEventListener("DOMContentLoaded", ->)
else
	document.attachEvent("onreadystatechange", ->)
  • Array comprehension
#!syntax python

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. 기타

  • Node.js에서 은근히 많이 쓰인다. 이유는 아무래도 npm의 커피스크립트 모듈 때문인 듯.
  • JavaScript에 비해 문법이 간결하여 많은 개발자들의 사랑을 받았지만 서서히 저물고 있는 중이다. 2016년 Stack Overflow 개발자 설문에서 저물고 있는 기술 3위를 차지했다.[1] 아무래도 최신 JavaScript 문법을 지원하지 않고, 경쟁자인 TypeScript가 잘 나가고 있기 때문인 듯하다.


[1] 참고로 1위는 Windows Phone 2위는 하스켈. 4위는 Dart