문제 문장을 자세히 살펴보면 ([] ==false)와 ([] || true)의 차이는 다음과 같습니다. -
첫 번째 경우에는 느슨한 조건부 검사를 사용하여 형식 강제 변환이 대신 수행되도록 합니다.
두 번째 경우에 []를 후크에서 유형 강제 대신 Boolean() 함수를 사용하는 해당 부울(참 또는 거짓)로 평가합니다.
이제 두 경우 모두에서 배후에서 발생하는 전환을 공개하겠습니다.
사례 1 - ([] ==거짓)
MDN 문서에 따르면 두 데이터 유형이 x와 y가 느슨한 동등 연산( ==)을 사용하여 비교되는 경우,
부울 값은 Number() 함수를 사용하여 숫자로 변환됩니다 -
따라서 조건은 이제 -
가 됩니다.[] == 0// Number(false) = 0
그런 다음 Object 유형의 변수가 기본 값으로 변환되는 경우 -
"" == 0
마지막으로 빈 문자열은 Number −
로 변환됩니다.0 == 0
위의 결과는 결국 true를 반환합니다.
사례 2 - ([] || 참)
이 경우 []의 참/거짓 값은 내장된 Boolean() 함수를 사용하여 부울로 변환하여 확인합니다. 그리고,
Boolean([]) = true
따라서 진실 값 []이 유지됩니다.