반응형
"true"== true가 JavaScript에서 false를 표시하는 이유는 무엇입니까?
두 피연산자가 동일한 유형이 아닌 경우 JavaScript는 피 연산 튼 변환 한 다음 엄격한 비교를 적용합니다. 피연산자가 숫자 또는 부울이면 피연산자는 가능한 경우 숫자로 변환됩니다. 복수의 언어로 변환됩니다.
이를 염두에두고 "true" == true
다음과 같이 평가 합니다.
- 같은 유형입니까? 아니
- 피연산자가 숫자 또는 부울입니까? 예
- 둘 다 숫자로 변환 할 수 있습니까? 아니요 (
isNaN(Number("true")) // true
) - 피 연산에 있습니까? 예
- 다른 피 연산 데이터 복제로 변환 할 수 있습니까? 예 (
String(true) === "true" // true
)
로 평가되어야 하는 것 "true"
및로 끝났지 만 JavaScript는 거짓을 표시합니다."true"
true
내가 무엇을 놓쳤습니까?
은로 "true"
CHAPTER 2 되기 때문에 NaN
잠시 true
로 변환됩니다 1
. 그래서 많은 것입니다.
당신이보고 한 것처럼, 둘 다 숫자로 변환됩니다. 적어도 왜냐하면 true
될 수 있기 때문입니다 (에릭 Reppen의 코멘트 참조).
- Type (x)가 Number이고 Type (y)가 String이면 비교 결과 x == ToNumber (y)를 반환합니다.
- 유형 (x) 가이 고이고 유형 (y)가 숫자이면
- Type (x)가 Boolean이면 비교 결과를 반환합니다. ToNumber (x) == y.
- Type (y)가 Boolean이면 비교 결과 x == ToNumber (y)를 반환합니다.
따라서 "true"== true는 js 엔진에서 다음과 같이 해석됩니다.
- "true"== toNumber (true)
- "참"== 1
- toNumber ( "true") == 1
- NaN == 1
===> 거짓
추상 평등 비교 알고리즘에 따르면
http://www.ecma-international.org/ecma-262/5.1/#sec-11.9.3
oprend 중 하나가 부울이고 다른 하나가 아닌 경우 부울은 숫자 0 또는 1로 변환 true == "true"
거짓입니다.
참고 URL : https://stackoverflow.com/questions/11363659/why-does-true-true-show-false-in-javascript
반응형
'IT' 카테고리의 다른 글
생성자에 매개 변수가있을 때 Moq로 모의 (0) | 2020.09.25 |
---|---|
웹 페이지에 RTSP 비디오 스트림을 표시하고 있습니까? (0) | 2020.09.25 |
pip로 편집 가능한 패키지를 제거하는 방법 (-e로 설치됨) (0) | 2020.09.25 |
mysqli_fetch_assoc ()는 다음 변수 / 멤버 함수 호출 bind_param () 오류를 예상합니다. (0) | 2020.09.25 |
Android 6.0에서 Bluetooth 저에너지 검색을 위해 위치를 활성화해야합니다. (0) | 2020.09.25 |