- 단축 평가란?
논리합 연산자인 || 와 논리곱 연산자인 && 는 왼쪽부터 오른쪽으로 평가를 진행한다.
평가결과가 나오면 끝까지 진행하지 않고 결과를 반환하는 것을 단축평가라 한다.
피연산자를 그대로 반환 (타입 변환하지 않음) 하는 것이 특징!
1. 논리합( || ) 연산자 단축평가
둘중 하나만 true 이면 true로 평가되므로 왼쪽 피연산자가 true이면 바로 왼쪽 피연산자를 그대로 반환한다.
문자열의 경우 빈 문자열이 아닌 경우는 모두 true로 평가된다
"something" || false; // "something"
"something" || true; // "something"
왼쪽 피연산자가 false 인 경우 오른쪽 피연산자를 그대로 반환한다.
false || "something"; // "something" (오른쪽 값 반환)
false || false; // false (오른쪽 값 반환)
2. 논리곱 ( && ) 연산자 단축평가
둘다 true 여야만 true로 평가되므로 왼쪽 피연산자가 false 이면 바로 false 로 평가된다.
왼쪽 피연산자가 false인 경우는 오른쪽이 무엇이든지 간에(볼 것도 없다) 왼쪽 피연산자를 반환한다.
false && "something"; // false
**왼쪽이 null일 경우도 마찬가지로 오른쪽을 볼 것도 없이 null로 반환된다. (null도 false로 평가되므로!)
null && "something"; // null
왼쪽 피연산자가 true일 경우에는 오른쪽 값을 그대로 반환한다.
"something" && true; // true
"something" && false; // false
이렇게 단축평가에 대해서 예시를 통해 알아봤는데 어디에 사용해야 할까?
- 단축평가 실사용 예시
1. 단축평가를 통해 데이터의 null 과 undefined를 확인할 수 있다.
const userData = null;
const Name = userData.name; // TypeError: Cannot read property 'name' of null
const Name = userData && userData.name; //에러 발생하지 않음
console.log(Name) //null
- 단축평가를 사용하지 않은 경우 : null로 선언된 변수의 프로퍼티를 참조하려고 하니 에러 발생
- 단축평가를 사용한 경우 : userData가 null이면 이면 false로 평가되므로 오른쪽은 볼 것도 없이 왼쪽 값이 할당된다.
2. 기본값 설정
let response = ''; // 응답받은 값
let myResult = response || 'default';
console.log(myResult); // 'default'
- 값이 아무것도 없을 경우 단축평가를 통해 기본값을 할당해줄 수 있다.
3. if 문 대신에 변수에 값을 할당 가능
let condition = true;
let result = '';
if(condition==true) result='참입니다'// if문으로 변수에 값 할당
result = condition && '참'; // 단축평가 사용하여 변수에 값 할당
console.log(result); // '참'
condition 값이 true이면 오른쪽 값을 그대로 할당,
condition 값이 false이면 오른쪽 값을 볼 것도 없이 왼쪽 값을 그대로 할당