설명에 들어가기 앞서 이야기했던 용어를 정리하고 들어가겠습니다.
연산자란 무엇인가? 들어가기 앞서 용어 정리를 간단하게 짚고 넘어 가야될거 같다.
피연산자
: 3+5라는 수식이 있다. 이때 3,5는 피연산자
즉,연산을 당하는 것.연산자
: '+'는 연산자라고 부른다. 어떠한 피연산자를 연산하는 것. 예로,(+,-,*)이 있다.
논리값
: 참과 거짓, javascript에서는 true
,false
로 나타낸다.
단항 연산자
: 하나의 값에 연산자를 붙이는 것. ex)a++,++b,-a 등이 있다
AND연산자는 두개의 &&
기호로 표시되며 두 피산연자가 모두 참일 경우 true
이며, 그렇지 않을 경우 false
를 반환한다.
result = true && true;
console.log(result); // true
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. 왼쪽부터 False 값을 찾아나간다.
// 2. False값을 찾은 경우, 해당값을 반환한다.
// 3. 마지막에 도달할 경우, 마지막 값을 반환한다.
true && true; // true
true && false; // false
false && true; // false
false && false; // false
true && "231" && 0 && 300; // 0
&&
나 ||
를 실행한 결과값이 항상 true
아니면 false
라고 잘못 알고 있는 경우가 매우 많다.
const something = true || false;
console.log(something); // true;
const somethingElse = true && 100;
console.log(somethingElse); // 100
somethingElse
가 true
로 나올 것이라 예상을 하지만 somethingElse
는 100이라는 숫자를 담게 된다.
&&
(AND연산자)는 ||
(OR연산자)보다 우선순위가 높다.
a && b || c && d
= (a && b) || (c && d)
와 같다.
OR연산자는 두개의 ||(역슬래쉬 기호)로 표시된다.
result = a || b;
인수 중 하나라도 true
가 있으면 true
를 반환하고 그렇지 않으면 false
를 반환한다.
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. 왼쪽부터 True 값을 찾아나간다.
// 2. True값을 찾은 경우, 해당값을 반환한다.
// 3. 마지막에 도달할 경우, 마지막 값을 반환한다.
true || true; // true
true || false; // true
false || true; // true
false || false; // false
false || "" || 500 || 300; // 500
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 논리 연산자는 산술 연산자보다 우선순위가 높다.
아래는 우선순위 순서를 비트 연산자를 제외하고 비교한 표이다.
잘 봤습니다.