비교 연산자논리 연산자단축 평가(Short circuit)논리 연산자를 사용한 단축 평가객체를 가리키기를 기대하는 변수가 null 또는 undefined가 아닌지 확인하고 프로퍼티를 참조할 때함수 매개변수에 기본값을 설정할 때옵셔널 체이닝 연산자null 병합 연산자
비교 연산자
비교 연산자 | 의미 | 사례 | 설명 |
== | 동등 비교 | x == y | x와 y의 값이 같음 |
=== | 일치 비교 | x === y | x와 y의 값과 타입이 같음 |
! = | 부동등 비교 | x ! = y | x와 y의 값이 다름 |
! == | 불일치 비교 | x ! == y | x와 y의 값과 타입이 다름 |
- 동등 비교(==) 연산자는 좌항과 우항의 피연산자를 비교할 때 먼저
암묵적 타입 변환
을 통해 타입을 일치시킨 후 같은 값인지 비교함 - 암묵적 타입변환이 일어나지 않게 해야 함. 매우 가독성 떨어짐
- 그래서, 편리한 경우도 있지만 결과를 예측하기가 어렵고 실수하기 쉬움 ⇒ 대신 일치 비교(===) 연산자를 사용
- 일치 비교 연산자를 좌항과 우항의 피연산자가 타입도 같고 값도 같은 경우에 한해 true를 반환하기에 암묵적 타입 변환을 하지 않고 값을 비교함 ⇒ 예측하기 쉬움
논리 연산자
논리 연산자 | 의미 |
|| | 논리합(OR) |
&& | 논리곱(AND) |
! | 부정(NOT) |
!
연산자의 결과값은 항상 boolean
||
또는&&
의 평가 결과는 불리언 값이 아닐 수 있음. 언제나 2개의 피연산자 중 어느 한쪽으로 평가됨
단축 평가(Short circuit)
논리 연산자를 사용한 단축 평가
논리 연산의 결과를 결정하는 피연산자를 타입 변환하지 않고 그대로 반환함
'Cat' && 'Dog' // -> 'Dog'
- 논리곱(&&) 연산자는 두 개의 피 연산자가 모두 true로 평가될 때 true를 반환하고, 첫 번째 피연산자가 false 면 바로 false를 반환하게 됨
'Cat' || 'Dog' // -> 'Cat'
- 논리합( || ) 연산자는 두 개의 피연산자 중 하나만 true 로 평가 되어도 true를 반환함. 첫 번째 값이 true면 첫 번째 값 반환, 첫 번째 값이 false 이면, 두 번째 피연산자도 확인해 보고 두 번째 피연산자 값을 반환하게 됨
단축 평가 표현식 | 평가 결과 |
true || anything | true |
false || anything | anything |
true && anything | anything |
false && anything | false |
객체를 가리키기를 기대하는 변수가 null 또는 undefined가 아닌지 확인하고 프로퍼티를 참조할 때
var elem = null; var value = elem.value; // 단축 평가 이용 var elem = null; var value = elem && elem.value; // elem 이 null이면 null 값을 할당, 아니라면 value property 값 할당
함수 매개변수에 기본값을 설정할 때
// 단축 평가를 사용한 매개변수의 기본값 설정 function getStringLength(str) { str = str || ''; return str.length; } // ES6의 매개변수의 기본값 설정 function getStringLength(str = '') { return str.length; }
옵셔널 체이닝 연산자
var elem = null; var value = elem?.value; console.log(value); // undefined
- ES11(ECMAScript2020)에서 도입된 옵셔널 체이닝 연산자
?.
는 좌항의 피연산자가 null 혹은 undefined 인 경우 undefined를 반환하고, 그렇지 않으면 우항의 프로퍼티 참조를 이어감
null 병합 연산자
var foo = null ?? 'default string'; console.log(foo); // "default string"
- ES11(ECMAScript 2020)에서 도입된 null 병합 연산자
??
는 좌항의 피연산자가 null 또는 undefined인 경우 우항의 피연산자를 반환하고, 그렇지 않으면 좌항의 피연산자를 반환함
- 변수에 기본값을 설정할 때 유용함