2011-12-14 4 views
2

변수를 초기화하지 않고 "파일"범위 (CS에서 닫힙니다)에서 변수를 선언 할 수있는 방법이 있습니까? 고안된 예 :CoffeeScript 변수 범위

init = -> 
    counter = 0 

inc = -> 
    counter += 1 

"카운터"를 선언해야하므로 작동하지 않습니다. 상단에 "counter = 0"을 추가하면 작동하지만 "= 0"은 필요하지 않습니다. (보다 현실적인 예제는 페이지로드시 DOM에 액세스하는 것과 관련이 있습니다. "파일"범위에서 올바르게 초기화 할 방법이 없습니다.)

답변

14

언급 한대로 외부 범위에 정의해야합니다. 이 같은 객체의 일부는 @counter 사용할 수 있습니다 귀하의 기능 만약

counter = null 
init = -> 
    counter = 0 
inc = -> 
    counter += 1 
+5

+1. 약칭이 제안되었지만 jashkenas는'= null' 구문을 확고히 믿는 사람입니다. –

+0

나는 그것을 보지 못했지만 키워드의 수를 줄이는 것이 이론적 이유라고 생각합니다. – mahemoff

4

, :; 역 따옴표로 '와 그 생성을 통해 그대로 전달됩니다

obj = 
    init: -> 
    @counter = 0 
    inc: -> 
    @counter += 1 
0

당신은`var에 카운터를 말할 수 자바 스크립트.

이와 같은 문제가 발생하면 생성 된 자바 스크립트를 살펴보십시오. 가변 범위가 어휘 적으로 함수로 제한된다는 것은 매우 명확합니다.

생성 된 자바 스크립트를 보는 것은 종종 coffeescript 구문의 동작이 무엇인지 이해하는 좋은 방법입니다.