모던 자바스크립트 Deep Dive, 이웅모
논리 연산자 &&
과 ||
의 경우 연산 우선 순위가 거의 뒤쪽
→ 각 항에 연산자를 포함하는 표현식이 있더라도 보통 해당 연산 결과를 가지고 논리연산을 함
c++의 경우 아래처럼 논리 연산의 결과 boolean
으로 연산되어 나타남
똑같은 연산을 자바스크립트에서 실행하게 되면
연산자의 우항인 "Hello World"
가 출력되는 것을 볼 수 있음
기본적으로 불리언 타입으로 암묵적 타입 변환을 통해 논리연산을 진행하는 것은 같음, boolean
타입이 아니더라도 연산에서 오류X
암묵적 타입 변환을 통해 연산한 뒤
양쪽의 값 중에서 해당 논리 연산의 결과를 결정지을 수 있는 항의 값으로 평가 (타입 변환 이전의 값)
논리 연산자의 경우 표현식을 앞에서부터 읽어가며
true
false
를 판단하여 값을 냄
단축평가 표현식 | 평가 결과 | 설명 |
---|---|---|
true && anything | anything | anything 의 값에 따라 표현식의 값이 바뀜 |
false && anything | false | and 연산이므로이미 false 에서 표현식이 거짓이라는 것을 판별 |
true ||anything | true | 이미 true 에서 표현식이 참이라는 것을 판별anything 이 무엇인지 볼 필요 없음 |
false ||anything | anything | or 연산이므로anything 의 값에 따라 표현식의 값이 바뀜 |
이때 좌항의 true
false
가 실제 불리언 값이 무조건 들어가야 한다는 뜻X
타입 변환하여 확인했을 때 해당 값이라면~~ 으로 생각
이를 이용해
1. null
이나 undefined
인 변수에 프로퍼티 접근 시 에러 없이 null
값 반환
2. 함수 매개변수 기본값 설정
등을 할 수 있다.
2의 경우 ES6에서 함수 매개변수 기본값을 설정 할 수 있게되어 해당 기능을 이용하면 되겠지만 이전 버전일 경우 단축 평가를 이용하여 기본값을 지정할 수 있음
// ES6 이전 : 단축평가 이용
function test (value) {
value = value || 0;
// 인수가 없는 경우 value는 undefined → 단축평가에 의해 0 할당
...
}
// ES6부터
function test (value=0) {
// 인수가 없는 경우 value에 기본값 0 사용
...
}