javascript에서의 == 판정에 대해서
黄舟
黄舟 2017-05-19 10:29:55
0
6
647

0 == "" // 참

위 코드는 암시적 변환에 의한 것인지 아니면 0이 false이고 ""도 false이기 때문에 동일하지만 === 기호를 사용하는 일은 일어나지 않기 때문에 암시적 변환 가능성이 높다고 생각합니다. . 질문.

제 질문은 이거예요

0 == 0

여전히

거짓 == 거짓

黄舟
黄舟

人生最曼妙的风景,竟是内心的淡定与从容!

모든 응답(6)
黄舟

분명히 말씀드리자면 여기 저보다 암시적 변환에 대해 더 잘 아는 사람은 없습니다.

먼저 ECMAScript 사양의 == 변환 규칙을 살펴보세요.

왼쪽의 0은 숫자형

오른쪽의 "" 유형은 문자열 유형입니다

해당 규칙에 따라 하위 4가지 규칙이 충족되면 이때 비교가 이루어집니다. x==ToNumber(y) 이때 0==ToNumber("")

ToNumber()에 대한 ECMAScript의 해당 규칙을 살펴보겠습니다.

그럼 아래를 보세요:

최종 ToNumber("")가 +0으로 변환되는 것을 보셨나요

결국 0==+0이 됐습니다. 암시적 변환은 두 숫자의 비교로 끝난다는 점을 기억하세요.

이 그림에서 구체적인 해당 규칙을 설명할 수 있습니다.

물론 가장 간단한 방법은 다음과 같습니다.

으아악

알겠습니다. 위 내용이 이해가 안 되시면 제가 쓴 두 글을 읽어보시면 이해하실 수 있습니다.

JavaScript에서 여러 가지 어려운 유형 변환을 분석하려면 []==![]에서 true로 변경하세요

from ++[[]][+[]]+[+[]]==10? 약한 유형의 JS의 암시적 변환에 대한 심층 설명

위 내용을 이해한 후 다음을 연습에 사용할 수 있습니다.

으아악
刘奇

일종의

0等于false也是隐式类型转换.

大家讲道理

전환은 모두 거짓입니다.

으아악

물론, 구체적인 비교는 규칙에 따라 다릅니다

刘奇

0은 암시적으로 false로 변환되며 엄격 모드에서는 오류가 보고됩니다. 비교를 위해 ===를 사용하는 것이 좋습니다.

给我你的怀抱

JS에는 상황에 특히 맞는 "==" 비교 규칙이 있습니다. 한 값이 숫자이고 다른 값이 문자열인 경우 먼저 문자열을 숫자로 변환한 다음 변환된 값을 사용하여 비교합니다.
그러므로 등호 오른쪽의 빈 문자열 ""은 숫자 0으로 변환되며 왼쪽과 오른쪽은 동일합니다. js 권위 가이드

에 == 비교 변환 규칙에 대한 자세한 소개가 있습니다.
刘奇

0 == "" // 참

이 문장은 0 == Number("")

과 동일합니다.

3가지 유형의 숫자, 문자열, 부울 유형 간의 비교를 위해 먼저 숫자로 변환한 후 비교합니다.

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿