CoffeeScript는 ; { 등을 가급적 배제하고 휴먼리더블하게 작성하게 해준다. 한줄띄기, 스페이스, 탭 등으로 구분하여 작문(코딩)을 한다
1) 기본적인 작성법
- 문자, 오브젝트, 범위, 변수
- 문자 다루기 : #{} 을 통하여 변수 맵핑 : hi.coffee
name = "dowon" greeting = "hi, #{name}!" multi = """ this is a greeting: #{greeting} """ console.log multi
// 결과 : """ 를 사용했을 때 내부의 띄워쓰기 그대로 적용됨 <pre> 태그 유사
D:\Development\coffeescript>coffee hi
this is a greeting:
hi, dowon!
D:\Development\coffeescript>
- 범위 다루기 : ..과 ... 의 차이는 끝수 포함/미포함 : range.coffe
range = [0..10] console.log range range = [0...10] console.log range range = [15...10] console.log range
// 결과
D:\Development\coffeescript>coffee range
[ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ]
[ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 ]
[ 15, 14, 13, 12, 11 ]
- 오브젝트 다루기 : obj.coffee
obj = name: "dowon", job: "Programmer" console.log obj obj = name: "dowon-01" job: "Programmer-01" console.log obj name = "dowon-02" job = "Programmer-02" obj = name: name, job: job console.log obj obj = {name, job} console.log obj
- key:value 같은 줄에 쓰면 콤마(,) 구분
- 한줄 띠기 하면 콤마 필요없음
- {name} 하면 명칭을 그대로 key 명칭을 활용
// 결과
D:\Development\coffeescript>coffee obj
{ name: 'dowon', job: 'Programmer' }
{ name: 'dowon-01', job: 'Programmer-01' }
{ name: 'dowon-02', job: 'Programmer-02' }
{ name: 'dowon-02', job: 'Programmer-02' }
- 변수 다루기 : variable.coffee
[one, two, three] = ["1", "2", "3"] console.log two console.log three name = "dowon" obj = {name, job:"Programm er", other: {name}} console.log obj // Generated by CoffeeScript 1.4.0 (function() { var name, obj, one, three, two, _ref; _ref = ["1", "2", "3"], one = _ref[0], two = _ref[1], three = _ref[2]; console.log(two); console.log(three); name = "dowon"; obj = { name: name, job: "Programmer", other: { name: name } }; console.log(obj); }).call(this);
// 결과
D:\Development\coffeescript>coffee variable
2
3
{ name: 'dowon', job: 'Programmer', other: { name: 'dowon' } }
2) Function 다루기
- 주석, 함수, 아규먼트 배열, Math.random
- 주석 : # 무시되는 문장 (컴파일시 주석문도 안남음), ### 주석 /* */ 으로 변환 : comment.coffee
one = 1 # comment ### comment 2 ### two = 2
- 함수 만들기 : -> 사용 : greet.coffee
### function greet (name) { console.log("hi" + name +"!"); } greet = function(name) { } ### greet = (name) -> console.log "hi #{name}!" greet "Greeting" greet2 = (name = "friend") -> "hi #{name}" console.log greet2 console.log greet2()
// 결과
D:\Development\coffeescript>coffee greet
hi Greeting!
[Function]
hi friend <=== () 를 붙여서 함수 호출한다
- 배열 아규먼트 만들기 : ... 사용 : array.coffee
test = (x, y, z...) -> console.log x console.log y console.log z test "one", "two", "three" console.log "---------------------" test "one", "two", "three", "four", "five" test2 = (x..., y, z) -> console.log x console.log y console.log z test2 "one", "two", "three" console.log "---------------------" test2 "one", "two", "three", "four", "five" test3 = (x, y..., z) -> console.log x console.log y console.log z test3 "one", "two", "three" console.log "---------------------" test3 "one", "two", "three", "four", "five"
// 결과
D:\Development\coffeescript>coffee array
one
two
[ 'three' ]
---------------------
one
two
[ 'three', 'four', 'five' ]
// test2 호출
[ 'one' ]
two
three
---------------------
[ 'one', 'two', 'three' ]
four
five
// test3 호출
one
[ 'two' ]
three
---------------------
one
[ 'two', 'three', 'four' ]
five
- 자동 실행 함수 : do 사용하여 자동 실행토록 만들어준다 : anon.coffee
### (() -> console.log())() ### ### automatically invoke function ### do (message = "hi dowon") -> console.log message // Generated by CoffeeScript 1.4.0 /* (() -> console.log())() */ /* automatically invoke function */ (function() { (function(message) { return console.log(message); })("hi dowon"); }).call(this);
// 결과 : 만일 do를 넣지 않으면 수행되지 않음
D:\Development\coffeescript>coffee anon
hi dowon
- Math.random 사용하기 : random.coffee
### Math.random() ### rand = (max = 10, min = 0) -> Math.floor(Math.random() * (max - min + 1)) + min console.log rand() console.log rand 100 console.log rand 60, 50
// 결과 : 수행때 마다 틀린 random값이 지정 범위내에서 출력됨
D:\Development\coffeescript>coffee random
5
100
53
D:\Development\coffeescript>coffee random
1
32
53
3) 비교연산
- ===, !== 사용하기
- if 문 사용하기
- ===, !== 를 사용하는 대신 is, isnt 문장으로 사용하기 : operator.coffee
### is === isnt !== ### name = "dowon" if name is "dowon" console.log "great" if name isnt "Dowon" console.log "poor" ### if( !false ) ### if not false console.log "cool" ### var name = "dowon", job = "programmer"; if(name === "dowon" || job === "programmer") { console.log("right") } ### name = "dowon" job = "programmer" if name is "dowon" and job is "programmer" console.log "right"
// 결과
D:\Development\coffeescript>coffee operator
great
poor
cool
right
- ? 연산자를 통하여 null 체크 하기 : operator2.coffee
name = "dowon" if name? console.log "hi" person = name: "dowon" job: "programmer" console.log person?.name name = name || "youngsik" name ||= "youngsik" name ?= "youngsik" console.log name // Generated by CoffeeScript 1.4.0 (function() { var name, person; name = "dowon"; if (name != null) { console.log("hi"); } person = { name: "dowon", job: "programmer" }; console.log(person != null ? person.name : void 0); name = name || "youngsik"; name || (name = "youngsik"); if (name == null) { name = "youngsik"; } console.log(name); }).call(this);
// 결과
D:\Development\coffeescript>coffee operator2
hi
dowon
dowon
- if 문을 재구성한다 : if.coffee
# x = 4 # if( x >= 0 && x <= 10) {} x = 4 if 0 <= x <= 10 console.log "true" // Generated by CoffeeScript 1.4.0 (function() { var x; x = 4; if ((0 <= x && x <= 10)) { console.log("true"); } }).call(this);
// 결과
D:\Development\coffeescript>coffee if
true
* 테스트 파일 다운로드
4) CoffeeScript 문법 & 장/단점
- if 문을 한줄로 사용할 때 조건 뒤에 then 구문 붙이기
예) if name is "dowon" then console.log "right"
'Languages > CoffeeScript' 카테고리의 다른 글
[CoffeeScript] 문법 사용하기 (5) - regex, html (0) | 2013.01.29 |
---|---|
[CoffeeScript] 문법 사용하기 (4) - class, extends (0) | 2013.01.27 |
[CoffeeScript] 문법 사용하기 (3) - @ :: 표현 (0) | 2013.01.27 |
[CoffeeScript] 문법 사용하기 (2) - 조건, 반복문 (0) | 2013.01.24 |
[CoffeeScript] 설치하고 간단 사용하기 (0) | 2013.01.24 |