[Javascript] 연산자의 종류와 우선순위(Part.2 논리 연산자와 우선순위)

신세원·2020년 9월 9일
0

javascript

목록 보기
10/19
post-thumbnail

설명에 들어가기 앞서 이야기했던 용어를 정리하고 들어가겠습니다.

연산자란 무엇인가? 들어가기 앞서 용어 정리를 간단하게 짚고 넘어 가야될거 같다.

  • 피연산자: 3+5라는 수식이 있다. 이때 3,5는 피연산자 즉,연산을 당하는 것.
    숫자와 문자열 또는 객체가 될 수도 있다.
  • 연산자: '+'는 연산자라고 부른다. 어떠한 피연산자를 연산하는 것. 예로,(+,-,*)이 있다.

  • 논리값: 참과 거짓, javascript에서는 true,false로 나타낸다.

  • 단항 연산자: 하나의 값에 연산자를 붙이는 것. ex)a++,++b,-a 등이 있다


논리 연산자(Logival Oprator)

1. && (AND 연산자)

AND연산자는 두개의 &&기호로 표시되며 두 피산연자가 모두 참일 경우 true이며, 그렇지 않을 경우 false를 반환한다.

result = true && true;
console.log(result);	// true

1.1 && (AND 연산자) 예제

a1 = true  && true       // t && t returns true
a2 = true  && false      // t && f returns false
a3 = false && true       // f && t returns false
a4 = false && (3 == 4)   // f && f returns false
a5 = 'Cat' && 'Dog'      // t && t returns "Dog"
a6 = false && 'Cat'      // f && t returns false
a7 = 'Cat' && false      // t && f returns false
a8 = ''    && false      // f && f returns ""
a9 = false && ''         // f && f returns false

숫자 1은 true, 숫자 0은 false로 처리된다.

1.2 AND연산자의 구동방식

// 1. 왼쪽부터 False 값을 찾아나간다.
// 2. False값을 찾은 경우, 해당값을 반환한다.
// 3. 마지막에 도달할 경우, 마지막 값을 반환한다.

true && true; // true
true && false; // false
false && true; // false
false && false; // false
true && "231" && 0 && 300; // 0

1.3 AND연산자 사용시 주의사항

&&||를 실행한 결과값이 항상 true아니면 false라고 잘못 알고 있는 경우가 매우 많다.

const something = true || false;
console.log(something); // true;

const somethingElse = true && 100;
console.log(somethingElse); // 100

somethingElsetrue로 나올 것이라 예상을 하지만 somethingElse는 100이라는 숫자를 담게 된다.

&&(AND연산자)는 ||(OR연산자)보다 우선순위가 높다.
a && b || c && d = (a && b) || (c && d)와 같다.

|| (OR연산자)

OR연산자는 두개의 ||(역슬래쉬 기호)로 표시된다.

result = a || b;

인수 중 하나라도 true가 있으면 true를 반환하고 그렇지 않으면 false를 반환한다.

1.1 OR연산자 예제

o1 = true  || true       // t || t returns true
o2 = false || true       // f || t returns true
o3 = true  || false      // t || f returns true
o4 = false || (3 == 4)   // f || f returns false
o5 = 'Cat' || 'Dog'      // t || t returns "Cat"
o6 = false || 'Cat'      // f || t returns "Cat"
o7 = 'Cat' || false      // t || f returns "Cat"
o8 = ''    || false      // f || f returns false
o9 = false || ''         // f || f returns ""
o10 = false || varObject // f || object returns varObject

OR연산자는 두 피연산자가 모두 false일 때를 제외하고는 항상 true다. 피연산자가 boolean이 아닌 경우, 평가를 위해 boolean으로 변환된다.

if (1 || 0) { 	// if( true || false )처럼 동작
  alert( 'truthy!' );
}

위와 같이 숫자 1은 true, 숫자 0은 false로 처리된다.

1.2 OR연산자 구동 방식

// 1. 왼쪽부터 True 값을 찾아나간다.
// 2. True값을 찾은 경우, 해당값을 반환한다.
// 3. 마지막에 도달할 경우, 마지막 값을 반환한다.

true || true; // true
true || false; // true
false || true; // true
false || false; // false
false || "" || 500 || 300; // 500

! (NOT연산자)

NOT연산자는 !(느낌표)로 표시된다.

n1 = !true               // !t returns false
n2 = !false              // !f returns true
n3 = !''                 // !f returns true
n4 = !'Cat'              // !t returns false

피연산자를 boolean 유형으로 변환하여 true/false로 값을 나눈 후 그 결과값의 반대값을 반환한다.

alert( !!"non-empty string" ); 	// true
alert( !!null ); 		 // false

!!를 이용하여 이중으로 NOT을 사용할 수 있다.

연산자 우선순위

Javascript 우선순위 순서는
괄호()->증감 연산자->산술 연산자->비교 연산자->논리 연산자->대입 연산자 순이다
괄호가 가장 순위가 높다.
NOT 논리 연산자는 산술 연산자보다 우선순위가 높다.

아래는 우선순위 순서를 비트 연산자를 제외하고 비교한 표이다.

profile
생각하는대로 살지 않으면, 사는대로 생각하게 된다.

1개의 댓글

comment-user-thumbnail
2023년 11월 26일

잘 봤습니다.

답글 달기