CoffeeScript

덤프버전 :

분류

파일:다른 뜻 아이콘.svg
은(는) 여기로 연결됩니다.
커피에 대한 내용은 커피 문서
커피번 문단을
커피# 부분을
, {{{#!html }}}에 대한 내용은 문서
#s-번 문단을
#s-번 문단을
# 부분을
# 부분을
, {{{#!html }}}에 대한 내용은 문서
#s-번 문단을
#s-번 문단을
# 부분을
# 부분을
, {{{#!html }}}에 대한 내용은 문서
#s-번 문단을
#s-번 문단을
# 부분을
# 부분을
, {{{#!html }}}에 대한 내용은 문서
#s-번 문단을
#s-번 문단을
# 부분을
# 부분을
, {{{#!html }}}에 대한 내용은 문서
#s-번 문단을
#s-번 문단을
# 부분을
# 부분을
, {{{#!html }}}에 대한 내용은 문서
#s-번 문단을
#s-번 문단을
# 부분을
# 부분을
, {{{#!html }}}에 대한 내용은 문서
#s-번 문단을
#s-번 문단을
# 부분을
# 부분을
, {{{#!html }}}에 대한 내용은 문서
#s-번 문단을
#s-번 문단을
# 부분을
# 부분을
, {{{#!html }}}에 대한 내용은 문서
#s-번 문단을
#s-번 문단을
# 부분을
# 부분을
참고하십시오.





1. 개요
2. 특징
3. 여담


파일:CoffeeScript 로고.svg

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
number = 42
opposite = true

  • Conditional Assignment
number = -42 if opposite

  • Function
coffeescript 내 모든 함수는 아래와 같이 작성된다.
function keyword
는 더 이상 필요가 없다.
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 로 변환된다.
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
alert "왜 불러" if elvis?

if window.addEventListener?
 document.addEventListener("DOMContentLoaded", ->)
else
 document.attachEvent("onreadystatechange", ->)

  • Array comprehension

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


파일:크리에이티브 커먼즈 라이선스__CC.png 이 문서의 내용 중 전체 또는 일부는 2023-10-22 16:36:06에 나무위키 CoffeeScript 문서에서 가져왔습니다.

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