JavaScript 논리 연산자가 때때로 부울 대신 개체를 반환하는 이유는 무엇입니까?

Linda Hamilton
풀어 주다: 2024-11-18 02:42:02
원래의
974명이 탐색했습니다.

Why Do JavaScript Logical Operators Sometimes Return Objects Instead of Booleans?

JavaScript의 논리 연산자: 부울이 아닌 결과 이해

항상 숫자 값을 반환하는 수학 연산자와 달리 논리 연산자(&& 및 | |) JavaScript에서는 때때로 부울 대신 객체를 반환할 수 있습니다. 이는 특히 조건부 검사에 사용하려고 할 때 직관에 어긋날 수 있습니다.

객체가 반환되는 이유

|| 및 && 연산자는 논리적 단락 연산자입니다. 즉, 피연산자를 왼쪽에서 오른쪽으로 평가하고 완전히 결정된 첫 번째 논리 값을 반환합니다. JavaScript에서 이 값은 true 또는 false일 수 있지만 객체일 수도 있습니다.

조건부 논리 이해

X || Y, X가 먼저 평가되어 부울 값으로 해석됩니다. X가 true이면 즉시 반환되고 Y는 평가되지 않습니다. 이는 표현식이 이미 true로 결정되었기 때문입니다.

X가 false이면 Y가 평가되고 해당 부울 값이 반환됩니다.

마찬가지로 &&는 첫 번째 인수가 있으면 평가를 중지합니다. 거짓입니다.

"거짓"의 트릭

첫 번째 혼란은 표현식이 "true"로 평가되면 표현식 자체가 반환되기 때문에 발생합니다. 이것이 논리식에서 실제 값이 반환되는 것을 볼 수 있는 이유입니다.

The Trick with Null

두 번째 혼동 지점은 다양한 버전의 JavaScript 동작에서 비롯됩니다. 처음에는 "false" 표현식에 대해 false를 반환했지만 버전 1.2부터는 표현식의 실제 값을 반환합니다.

설명:

var _ = (obj.fn && obj.fn()) || obj._ || (obj._ = {}); // Returns obj.fn() if defined, otherwise obj._
var _ = obj && obj._; // Returns obj._ if obj is true, otherwise obj
로그인 후 복사

위 내용은 JavaScript 논리 연산자가 때때로 부울 대신 개체를 반환하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿