&& 및 || 일반적인 경우에는 비교적 간단하므로 여기서는 논의하지 않습니다.
다음 토론을 위해 두 가지 물건을 준비합니다.
var alice = {
name: "alice" ,
toString: function () {
return this.name;
}
}
var smith = {
name: "smith",
toString: 함수 () {
return this.name
}
}
자바스크립트에서 &&는 부울 유형에만 사용할 수 없으며, 부울 유형 결과만 반환할 수도 없습니다.
l 첫 번째 피연산자가 부울 유형이고 값이 false인 경우 false를 직접 반환합니다.
l 첫 번째 피연산자가 부울 유형이고 값이 true이고 다른 피연산자가 object 유형인 경우 이 객체가 반환됩니다.
l 두 피연산자가 모두 객체 유형인 경우 두 번째 객체를 반환합니다.
l 피연산자가 null이면 null이 반환됩니다.
l 피연산자 중 하나라도 NaN이면 NaN을 반환합니다.
l 정의되지 않은 피연산자가 있으면 정의되지 않은 것을 반환합니다.
alert(false && alice); // false
alert(true && alice) // alice
alert(alice && smith)
alert(smith && alice); // 앨리스
alert(null && alice); // null
alert(NaN && alice) // NaN
alert(undefine && alice); // undefine
alert(alice && undefine); // undef
||의 경우 Boolean 형식에만 사용되는 것이 아니고 Boolean 형식의 결과만 반환하는 것도 아닙니다.
실제로 null, undefine, NaN은 false로 처리됩니다. 그리고 그 객체는 참으로 취급됩니다.
l 첫 번째 피연산자가 부울 유형이고 값이 true이면 true를 직접 반환합니다.
l 첫 번째 피연산자가 부울 유형이고 값이 false이고 두 번째 피연산자가 객체이면 객체 객체가 반환됩니다.
l 두 피연산자가 모두 객체 유형인 경우 첫 번째 객체를 반환합니다.
l 두 피연산자가 모두 null이면 null이 반환됩니다.
l 두 피연산자가 모두 NaN이면 NaN을 반환합니다.
l 두 피연산자가 모두 정의되지 않은 경우 정의되지 않은 값이 반환됩니다.
alert(false || 앨리스) // 앨리스
alert(true || alice) // true
alert(alice || smith) // 앨리스
alert(스미스 || 앨리스) // 스미스
alert(null || 앨리스) // 앨리스
alert(앨리스 || null) // 앨리스
alert(null || null) // null
alert(NaN || 앨리스) // 앨리스
alert(앨리스 || NaN) // 앨리스
alert(NaN || NaN); // NaN
alert(정의되지 않음 || 앨리스) // 앨리스
alert(앨리스 || 정의되지 않음) // 앨리스
alert(정의되지 않음 || 정의되지 않음); // 정의되지 않음
너무 복잡하게 설명하지 않으셔도 됩니다.
a && b: a와 b를 불리언 타입으로 변환한 후 논리 AND를 수행하세요. . True는 b를 반환하고, false는 a를 반환합니다.
a || b: a, b를 부울 유형으로 변환한 다음 논리 OR을 수행하고, true는 a를 반환하고, false는 b를 반환합니다.
변환 규칙:
객체가 true입니다. 🎜>0이 아닌 숫자는 true
비어 있지 않은 문자열은 true
Others는 false
관련 기사는 다음 기사를 참조하여 요약할 수 있습니다
js AND or 연산자 | | && 마법의 사용
JS는 AND 또는 연산자 우선순위를 사용하여 if else 조건부 판단 표현을 구현합니다
자바스크립트 && 및 || 알고리즘의 대체 사용 기술