2013-10-17 2 views
4

물음표 연산자를 사용하는 CoffeeScript 스 니펫이 있습니다. Javascript 구문으로 변환해야합니다. 스 니펫은 다음과 같습니다.CoffeeScript의 물음표 구문을 자바 스크립트로 변환

closeItem: (item) -> 
    item.close() if item?.close and not item.isClosed 

CoffeeScript 사이트를 실행하려고 시도한 결과 다음과 같습니다.

({ 
    closeItem: function(item) { 
    if ((item != null ? item.close : void 0) && !item.isClosed) { 
     return item.close(); 
    } 
    } 
}); 

이 정보가 맞습니까? 내 지식 (자바 스크립트와 CoffeeScript의 새로운 기능)을 기반으로 번역 할 것입니다.

closeItem: function(item) { 
    if(item && item.close && !item.isClosed) item.close(); 
} 

내가 누락 된 상품이 있습니까?

+0

':은; '자체가'if' 문 '경우 (TRUE) {A ++;}이다 다른 {A -;}' 이 '는 true ++과 같다 :? 할까 .. ; –

답변

4

item.close()의 반환 값을 반환 할 수도 있지만 번역은 좋습니다 (CoffeeScript 버전이하는 것처럼). CoffeeScript의 번역은 아마도 더 일반적인 목적 일 것입니다 (예를 들어 이 0 일 경우 a?.foo을 처리 할 것입니다). item이 객체라는 것을 알고 있으면 버전은 정상입니다. ?

+0

CoffeeScript는 항목이 false 일 때 (예 :'false' 또는 '') 엣지 케이스를 처리합니다. 존재와 진실을 구별합니다. –

+0

@PeterLyons : 맞습니다 (사실 저는 비슷한 관찰에서 편집했습니다. 제 경우에는 숫자가 '0'입니다). OP 코드에는 필요하지 않지만 좀 더 일반적인 목적입니다. –

+0

질문에 유감 스럽지만'if (item)'가 이미 javascript에서 위조 된 값을 검사 했으므로'0'과'' '값도 마찬가지입니까? –

관련 문제