coffeescript 의 for 문
javascript 와 조금 차이를 보이는데, 문법이 비슷해서 혼동의 여지가 있다. 처음에 많이 헷갈렸던 기억이 있어 coffee script 에서 for 문을 조금 정리 해 보자.일단 coffee 의 for 문은 javascript 에서 아래처럼 변경된다.
coffeescript
arr = ['a','b','c'] for a in arr console.log(a) for a, i in arr console.log(a) console.log(i) obj = { key : 'val1' key2 : 'val2' } for k of obj console.log(k) for k, v of obj console.log(k) console.log(v)
javascript
var a, arr, i, k, obj, v, _i, _j, _len, _len1; arr = ['a', 'b', 'c']; for (_i = 0, _len = arr.length;_i < _len; _i++) { a = arr[_i]; console.log(a); } for (i = _j = 0, _len1 = arr.length; _j < _len1; i = ++_j) { a = arr[i]; console.log(a); console.log(i); } obj = { key: 'val1', key2: 'val2' }; for (k in obj) { console.log(k); } for (k in obj) { v = obj[k]; console.log(k); console.log(v); }
정리
요약하면 이렇다. javascript 에서 object 에 사용하던 'for...in' 은 coffeescript 에서 array 에서 사용되고, 대신에 'for...of' 를 사용한다. 그리고 javascript 에서 array 에 대해 사용하던 일반적인 for 문은 coffeescript 에서 'for...in' 으로 사용할 수 있다.참고로 coffeescript 의 for...in 은 좀 더 광범위하게 사용할 수 있다. Array 가 아니더라도, length 를 이용해서 순차적으로 iterate 하는 경우에는 for...in 을 사용하면 된다.
쉽게 얘기하자면 for...in 은 무조건 length 를 이용한 for loop 을 만들어 준다.
반대로 coffee 의 for...in 은 length 와 0 으로 시작하는 index 가 없는 object 에 대해서 사용하면 원하는 code 가 나오지 않는다.
coffeescript
- Array 에서는 for...in 을 사용
- Object 에서는 for...of 를 사용
javascript
- Array 에서는 for(var i=0; i<len; i++) 을 사용(참고로, for..in 은 권장하지 않는다.[ref. 1]
- Object 에서는 for...in 사용
parameter 순서
개인적으로 헷갈려서 한가지 더 적어놓자면, for...in 과 for...of 에서 parameter 의 순서이다.- for v, i in arr : 값(v)이 먼저온다.
- for k, v of obj : 값(v) 이 뒤에 온다.
댓글 없음:
댓글 쓰기