2011-09-30 5 views
25

JavaScript에서 0 == ""이 true 인 이유는 무엇입니까? similar post here을 찾았지만 숫자 0이 빈 문자열과 비슷한 이유는 무엇입니까? 물론 0 === ""은 false입니다.왜 JavaScript에서 0 == ""true입니까?

+0

당신은 0 "주조"의미 거짓에 ","거짓으로 주조되고 검사가 거짓 == 거짓 => PHP에 대한 사실 –

+0

, 볼에 http : // PHP. net/manual/ko/types.comparisons.php – apscience

+0

Javascript가 일부 컨텍스트에서 문자열과 숫자를 자동으로 강제하기 때문에 == 연산자는 해당 컨텍스트 중 하나이며 0은 강제 변환됩니다. – millimoose

답변

46
0 == '' 

왼쪽 피연산자의 유형은 숫자입니다.
오른쪽 피연산자는 String 유형입니다. 이 경우

가 오른쪽 피연산자 타입 번호에 강제된다에서

0 == 0 

결과

0 == Number('') 

추상적 동일성 비교 알고리즘 (번호 4) :

Type (x)이 Number이고 Type (y)이 String 인 경우 의 결과를 비교 x == ToNumber (y)로 반환합니다.

출처 : http://es5.github.com/#x11.9.3

+0

고마워, 나는 그저 반대 방향으로, 0을 문자열로 변환 한 다음 false로 기대했다. –

+0

그렇습니다. 다른 한편으로 이것은 양쪽 모두가 거짓이라는 것을 의미합니다 - 다른 대답에서와 같이, 그것은 정확하지 않습니다. 왜냐하면 - 당신이 잘 보여준 것처럼 - 그 이유는 ""=> 0. 귀하의 도움에 감사드립니다! –

+1

@Horst - 네, 맞습니다. 둘 다'if (0)'이나'if ("")'에서 단독으로 사용하는지 알 수 있듯이, 둘 다 잘못된 것처럼 보이지만'=='비교의 경우에는 일어나지 않습니다. (Šime이 "양쪽 가치가 위선이기 때문에 위의 코멘트를 남긴 이유는 확실하지 않습니다.") – nnnnnn

관련 문제