Computer >> 컴퓨터 >  >> 프로그램 작성 >> JavaScript

([] ==false)가 true이면 ([] || true) 결과가 []가 되는 이유는 무엇입니까? - 자바스크립트

<시간/>

문제 문장을 자세히 살펴보면 ([] ==false)와 ([] || true)의 차이는 다음과 같습니다. -

첫 번째 경우에는 느슨한 조건부 검사를 사용하여 형식 강제 변환이 대신 수행되도록 합니다.

두 번째 경우에 []를 후크에서 유형 강제 대신 Boolean() 함수를 사용하는 해당 부울(참 또는 거짓)로 평가합니다.

이제 두 경우 모두에서 배후에서 발생하는 전환을 공개하겠습니다.

사례 1 - ([] ==거짓)

MDN 문서에 따르면 두 데이터 유형이 x와 y가 느슨한 동등 연산( ==)을 사용하여 비교되는 경우,

부울 값은 Number() 함수를 사용하여 숫자로 변환됩니다 -

따라서 조건은 이제 -

가 됩니다.
[] == 0// Number(false) = 0

그런 다음 Object 유형의 변수가 기본 값으로 변환되는 경우 -

"" == 0

마지막으로 빈 문자열은 Number −

로 변환됩니다.
0 == 0

위의 결과는 결국 true를 반환합니다.

사례 2 - ([] || 참)

이 경우 []의 참/거짓 값은 내장된 Boolean() 함수를 사용하여 부울로 변환하여 확인합니다. 그리고,

Boolean([]) = true

따라서 진실 값 []이 유지됩니다.