자바스크립트에서 || , && 를 종종 볼 수 있다.
논리연산자라고 하는데
일단 ||를 보자.
result = a || b;
인수중 하나라도 true면 true를 반환 하고 그렇지않다면 , false를 반환.
alert( true || true ); // true
alert( false || true ); // true
alert( true || false ); // true
alert( false || false ); // false
피연산자가 모두 false인 경우를 제외하고는 연산결과는 항상 true
||는 if문에서 자주사용. "주어진 조건중 하나라도 참인지를 테스트하는 용도"
예시코드를 보자.
let num= 10;
if(num===11 || num>9)
"num은 9보다 큽니다."
let time = 14;
let isholiday=true;
if(time < 12 || time >17 || isholiday) "we are close"// ?
이유는 isholiday가 트루기 때문에 .
만약 time이 11이면 아직 영업시간이 아니기때문.
첫번째 truthy를 찾는 연산자라 생각하면됨.
result= value1 || value2 || value3;
--->
let IsGirlFriend=false
let HaveMoney =false
let HaveTime= "A lot";
console.log(IsGirlFriend || HaveMoney || HaveTime) // A lot
두 피연산자가 모두 참일때 true를 반환.그 외 경우 false반환.
let hour =12;
let min = 10;
if(hour===12 && min===10){
"12시 10분임다"
}
피연산자 타입에 제약이 없음.
AND연산자는 첫번째 falsy를 반환
OR연산자는 첫번째 truthy를 반환
// 첫 번째 피연산자가 truthy이면,
// AND는 두 번째 피연산자를 반환합니다.
alert( 1 && 0 ); // 0
alert( 1 && 5 ); // 5
// 첫 번째 피연산자가 falsy이면,
// AND는 첫 번째 피연산자를 반환하고, 두 번째 피연산자는 무시합니다.
alert( null && 5 ); // null
alert( 0 && "아무거나 와도 상관없습니다." ); // 0
alert( 1 && 2 && 3 ); // 마지막 값, 3
모두 truthy 이기떄문에 "마지막"피연산자가 반환.
&&의 우선순위가 ||보다 높다.
AND 연산자 &&의 우선순위는 OR 연산자 ||보다 높다.
따라서 a && b || c && d는 (a && b) || (c && d)와 동일하게 동작.
if를 ||나 &&로 대체하지 않는것.
예시를 보자.
let x=10;
(x >11) || console.log("x는 11보다 작습니다")
왼쪽부터 truthy값을 찾기때문에 모든 피연산자를 확인하게 된다.
let x=10;
(x >1) || console.log("x는 1보다 작습니다")
왼쪽부터 falsy값을 찾기때문에 모든 피연산자를 확인하게 된다.
목적에 맞게끔 사용.
let value = true;
result= !value; // false
참고로 alert()메서드는 리턴값이 undifined이다.
이번포스트 자바스크립트인포