[JavaScript] 논리 연산자와 단축 평가

Lpla

·

2021. 4. 11. 19:00

반응형

1. 논리 연산자

자바스크립트는 세 종류의 논리 연산자가 있다.

 

연산자 의미
|| OR
&& AND
! NOT

 

OR 연산자는 피연산자 중 하나라도 true라면 첫번째 true를 반환하고 그렇지 않으면 false를 반환한다.

AND 연산자는 피연산자가 모두 true라면 true를 반환하고 그렇지 않으면 첫번째 false를 반환한다.

NOT 연산자는 하나의 피연산자만을 가지고 해당 피연산자의 불린형(true, false)을 역으로 반환한다.

 

true || true;   // true
false || true;  // true
true || false;  // true
false || false; // false


true && true;   // true
false && true;  // false
true && false;  // false
false && false; // false


null || 2 || undefined; // 2
1 && null && 2; // null


!true;  // false
!false;  // true

 

NOT 연산자는 값을 항상 불린형으로 반환한다.

이 점을 이용하는 방법으로 NOT을 두 번 사용하여 값을 불린형으로 변환할 수 있다.

 

!0; // true
!!'coffee'; // true

 

 

2. 단축 평가

항상 불린형을 반환하는 NOT 연산자와 달리 OR과 AND 연산자는 논리 연산의 결과를 결정하는 피연산자를 형변환 없이 그대로 반환한다.

 

'coffee' || 'donut'; // 'coffee'
false || 'donut'; // 'donut'
'coffee' || false // 'coffee'

'coffee' && 'donut'; // 'donut'
false && 'donut'; // false
'coffee' && false // false

 

키(key)와 값(value)으로 이루어진 객체 값을 참조할 때 단축 평가를 사용하면 에러를 방지할 수 있다.

 

var coffee = '';
coffee.value; // undefined

var coffee = null
coffee.value; // Uncaught TypeError: Cannot read property 'value' of null

var coffee = undefined;
coffee && coffee.value; // undefined

var coffee = null;
coffee && coffee.value; // null

 

변수가 없음으로 생기는 문제도 해결할 수 있다.

 

var firstName = "";
var lastName = "";
var nickName = "";

firstName || lastName || nickName; // ""
firstName || lastName || nickName || '이름이 없습니다.'; // "이름이 없습니다."

 

함수의 파라미터는 작성하지 않으면 undefined가 할당된다.

파라미터가 undefined일 경우 발생하는 에러도 방지할 수 있다.

 

function getLength(word) {
  return word.length;
}
getLength('안녕하세요'); // 5
getLength(); // Uncaught TypeError: Cannot read property 'length' of undefined


function getLength(word) {
  word = word || '';
  return word.length;
}
getLength('안녕하세요'); // 5
getLength(); // 0

 

반응형