2012-03-06 3 views
6

저는 Coffeescript를 정말 좋아하지만, 요즘 나를 괴롭히는 한가지는 if 문에서 Numbers와 String의 타입 문제입니다. 일반적으로 JavaScript는 ==를 사용할 때 자바 스크립트가 신경 쓰지 않지만 코프 스크립트는 모든 비교를 ===로 변환합니다. 오래 걸리는 구식 == 비교를 되 찾을 수있는 방법이 있습니까? 나는 어리석은 행동을하지만 그걸로 아무것도 발견하지 못했다.형변환 문제, 좋은 옛 == 사용 대신 == 사용 ===

그 이유는 화려한 http://js2coffee.org/을 사용하여 다른 사람들의 코드를 쉽게 읽을 수 있도록 변환했기 때문에 == 비교가 ==로 바뀌어 형 변환 문제를 입력하기 때문입니다. 말할 필요도없이 나는 전체 코드를 리팩터링하는 게으른 f *** g이다.).

+0

덕분에 정말 도움이 보이는 링크! – asawyer

+0

제목, 인사말 및 서명에 태그를 드롭하십시오. –

+2

아쉽게도 JavaScript 코드를 CoffeeScript로 변환 할 수있는 확실한 방법이 없습니다. js2coffee를 사용하는 경우이를 시작점으로 사용하십시오. 대개'a == b '가있을 때, 당신이 정말로 원하는 것은'+ a is + b' 나'# {a}'와 같은 문자열 비교가 "# {b}"와 같은 수치 비교입니다. –

답변

10

이으로 설계된 유형 변환 을 수행해야합니다. 당신이 정말로는 당신이 == 비교가 필요하다고 생각 경우에 당신은 역 따옴표에 넣어 수 있습니다

if `foo == bar` 
    alert 'Sloppy comparison true' 
+0

바로, 직접 JS를 작성하는 방법이 있습니다. 나는 if 문 안에서의 비교를 위해서만 작동한다는 것을 몰랐다. 고마워. – thomasf1

+0

문제 없습니다. 기꺼이 도와주세요. – Jivings

11

이것은 의도적으로 설계된 것입니다. CoffeeScript: Accelerated JavaScript Development

커피 스크립트의 책에서 인용 는 모두 자바 스크립트의 ===에 컴파일 ==이며; 자바 스크립트의 ==, 의 느슨한 유형 강제 평등 검사를 얻는 방법이 없으며 JSLint 및 기타가 "WTF?"순간의 출처로 눈살을 찌푸리게됩니다. 의는 http://wtfjs.com/2011/02/11/all-your-commas-are-belong-to-Array에서 예를 빌려 보자

",,," == new Array(4) // true 
There are also cases where == isn’t transitive: 
'' == '0' // false 
0 == '' // true 
0 == '0' // true 

이 머리 scratchers을 방지하기 위해, 당신은 asawyer 말했듯이 명시 적으로

+0

견적을 보내 주셔서 감사합니다. 나는 그것이 디자인 결정이고 그것이 교장 선생님의 좋은 결정이라는 것을 알고 있습니다. 나는 분명히 필요한 경우 (비록 많은 프로그래밍 언어가 "기본"올바른 방법으로,하지만 종종 못생긴 방법을 허용)이 주위에 방법이 있는지 궁금해. – thomasf1