논리연산자 활용과 주의점.

samuel Jo·2023년 3월 16일
0

내가 헷갈려서 쓰는 포스트 Chapter1

자바스크립트에서 || , && 를 종종 볼 수 있다.

논리연산자라고 하는데
일단 ||를 보자.

|| (OR)

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

&& 연산자(AND)

두 피연산자가 모두 참일때 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값을 찾기때문에 모든 피연산자를 확인하게 된다.

목적에 맞게끔 사용.

!(NOT)

let value = true;
result= !value; // false

참고로 alert()메서드는 리턴값이 undifined이다.

이번포스트 자바스크립트인포

profile
step by step

0개의 댓글