>  기사  >  웹 프론트엔드  >  JavaScript의 논리 연산자가 부울이 아닌 값을 반환하는 이유는 무엇입니까?

JavaScript의 논리 연산자가 부울이 아닌 값을 반환하는 이유는 무엇입니까?

Susan Sarandon
Susan Sarandon원래의
2024-11-18 03:01:02203검색

Why Do Logical Operators in JavaScript Sometimes Return Non-Boolean Values?

논리 연산자의 반환 값 이해

JavaScript에서 논리 연산자 &&(논리 AND) 및 || (논리적 OR)은 부울 결과를 반환하는 것으로 알려져 있습니다. 그러나 특정 상황에서는 놀랍게도 부울이 아닌 값을 반환할 수도 있습니다. 이러한 예외는 이러한 연산자의 기본 평가 프로세스로 인해 발생합니다.

논리 단락 연산자

&& 및 ||의 주요 특징 논리적 단락 연산자로서의 행동에 있습니다. 이러한 연산자를 사용하여 표현식을 평가할 때 왼쪽 인수를 먼저 평가합니다.

평가 || (논리적 OR)

||의 경우 왼쪽 인수가 완전히 결정된 논리값(true 또는 false)으로 평가되면 오른쪽 인수를 평가하지 않고 결과가 반환됩니다. 논쟁. 이는 논리적 결과가 이미 결정되었기 때문에 발생합니다.

&& 평가(논리적 AND)

||와 유사하게 &&는 왼쪽 인수를 먼저 평가합니다. 그러나 왼쪽 인수가 false로 평가되면 표현식은 오른쪽 인수를 평가하지 않고 false를 반환합니다. 이는 && 표현식이 true가 되려면 두 인수가 모두 true여야 하기 때문입니다.

반환 값 이해

논리 표현식이 true로 평가되면 && 그리고 || 왼쪽 인수 자체를 반환합니다. 이는 JavaScript에서 부울 값이 아닌 값으로 평가되는 모든 표현식이 true로 처리되기 때문입니다.

그러나 왼쪽 인수가 false로 평가되면 원래 표현식은 false로 평가됩니다. JavaScript 버전 1.2 이상에서는 표현식 자체가 결과로 반환됩니다. 이 동작을 사용하면 명시적인 삼항 연산자 없이도 논리 연산을 연결할 수 있습니다.

예:

다음 코드를 고려하세요.

var _ = (obj.fn && obj.fn()) || obj._ || (obj._ = {});

이 예에서 obj.fn이 정의되고 실제 값을 반환하면 obj.fn 표현식이 반환됩니다. obj.fn이 정의되지 않은 경우 표현식은 false로 평가되어 오른쪽 인수 obj._ || (obj._ = {}), 평가되어 반환됩니다.

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

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.