2012-07-19 2 views
1

은 다음과 커피 스크립트를 고려CoffeeScript -이 이상한 "Return"발생은 무엇을 의미합니까?

$(function() { 
    if (localStorage["Flag1"] !== "Done") { 
    localStorage["Flag1"] = "Done"; 
    } 
    return $(".start").click(function() { 
    if (localStorage["Flag2"] !== "Done") { 
     return localStorage["Flag2"] = "Done"; 
    } 
    }); 
}); 

가 렌더링 자바 스크립트로 재배되는 "반환"의 두 가지 이상한 발생이 있습니다

$ -> 
    if localStorage["Flag1"] isnt "Done" 
    localStorage["Flag1"] = "Done" # Flagged on first page loading 
    $(".start").click -> 
    if localStorage["Flag2"] isnt "Done" 
     localStorage["Flag2"] = "Done" # Flagged on first click interaction 

로 컴파일한다. 그들이하는 일은 스크립트의 실행에 어떤 영향을 미칩니 까? 감사!

답변

2

스크립트 실행에 영향을 미치지 않습니다. 첫 번째 return은 DOM 준비 이벤트 핸들러에서 $(".start")을 반환합니다 (jQuery click 메서드는 jQuery의 인스턴스를 반환하기 때문에). 특정 시점에 실행되는 콜백이므로 반환 값으로는 아무 것도 할 수 없습니다. 그것은 (클릭 이벤트 핸들러이 시간) 콜백에서 돌아온 이후

두 번째 return

당신은 반환 된 값으로 아무것도 할 수 없습니다, 다시 localStorage 속성을 설정 한 후, "Done"을 반환하지만 것입니다.

CoffeeScript는 return 각 함수의 마지막 표현식의 값을 믿습니다. 따라서 출력에 해당 return 문이 표시됩니다. 워드 프로세서에서 :

기능은 항상 최종 값을 반환합니다 비록

, 그것은 모두 가능하고 당신이 거 알아 때 명시 적 반환 (return value)에서 을 쓰는 함수 본문에서 조기 복귀하는 것이 좋습니다 완료.

+0

http://coffeescript.org/#expressions –