Development/Coding
커피스크립트에 대한 아쉬움
soomtong
2011. 12. 12. 23:54
커피스크립트 코딩 환경을 꾸미고 이것 저것 해보는 중 아쉬운 점이 발견되었다.
>> 이 문제는 커피가 함수 선언과 함수 표현에 따른 몰이해에 대한 문제로 깨닳음
(예제는 AJ 님의 블로그 코드입니다.)
자바스크립트 특성인 호이스팅 과정 때문에 발생하는 문제 같기도 하고 아무튼 아래의 코드를 보면서 테스트해본 결과 함수의 순서에 따라 작동이 다르다.
다른 함수에 있는 로컬 변수를 사용하기 위해 클로저를 사용했다.
결과는 아래와 같다.
그런데 구문의 순서를 조금 변경하여 아래와 같이 코딩하게 되면 실행되지 않는다.
타입 에러가 발생한다.
일단 졸려서 삽은 던져두고...
요약 : 커피스크립트 공부하기보다 자바스크립트 먼저 익숙해지도록 하자.
원래 자바스크립트 코드는 아래와 같음
>> 이 문제는 커피가 함수 선언과 함수 표현에 따른 몰이해에 대한 문제로 깨닳음
(예제는 AJ 님의 블로그 코드입니다.)
자바스크립트 특성인 호이스팅 과정 때문에 발생하는 문제 같기도 하고 아무튼 아래의 코드를 보면서 테스트해본 결과 함수의 순서에 따라 작동이 다르다.
A = ->
count = 100
console.log "count A : " + count
A1 = (B1) -> B1(count)
B = ->
A2 = A()
B2 = (count1) -> console.log "count B : " + count1
A2(B2)
B()
다른 함수에 있는 로컬 변수를 사용하기 위해 클로저를 사용했다.
결과는 아래와 같다.
count A : 100
count B : 100
그런데 구문의 순서를 조금 변경하여 아래와 같이 코딩하게 되면 실행되지 않는다.
A = ->
count = 100
console.log "count A : " + count
A1 = (B1) -> B1(count)
B = ->
A2 = A()
A2(B2)
B2 = (count1) -> console.log "count B : " + count1
B()
타입 에러가 발생한다.
TypeError: undefined is not a function
일단 졸려서 삽은 던져두고...
요약 : 커피스크립트 공부하기보다 자바스크립트 먼저 익숙해지도록 하자.
원래 자바스크립트 코드는 아래와 같음
function A() {
var count = 2011;
console.log("Local count = " + count)
return function (callback) {
return callback(count);
}
}
function B() {
var A2 = A();
A2(function (c1) {
console.log("A()'s count = " + c1);
});
}
B();