일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- Flutter
- 건담
- nico
- 자바
- DART
- javascript
- CSS
- C로 시작하는 컴퓨터 프로그래밍4판
- Web
- メソッド
- java
- 디지몬
- jsp
- 연습문제
- 一日一つメソッド
- vscode
- 일본어
- 日本語
- 인프런
- 건담베이스
- ruby
- 비즈니스일본어
- rails7
- 반다이몰
- rails
- Spring
- 単語
- Python
- springboot
- html
- Today
- Total
AR삽질러
JavaScript - 단락평가(Short-circuit Evaluation) (13) 본문
단락평가(Short-circuit Evaluation)
1. 단락평가(Short-circuit Evaluation)란
- 논리연산자 &&, || 가 평가 도중에 불필요한 연산을 생락하는 것으로 성능을 최적화하고 코드를 간결하게 작성하는데 유용하다.
- 논지연산자가 좌항의 값만으로 결과를 결정할 수 있을 경우 우항의 표현식은 평가하지 않고 결과를 반환하는 것을 의미한다.
let varA = false;
let varB = true;
console.log(varA && varB);
console.log(varA || varB);
- varA && varB
- varA가 false이기 때문에 varB는 평가되지 않고 결과는 false가 된다.
- varA || varB
- varA가 false이기 때문에 varB가 평가되고 결과는 true가 된다.
- &&(AND) 연산자는 좌항이 Falsy 값일 경우, 우항을 평가하지 않고 바로 좌항의 값을 반환합니다. 좌항이 Truthy 값일 경우, 우항을 평가하여 그 결과를 반환합니다.
- ||(OR) 연산자는 좌항이 Truthy 값일 경우, 우항을 평가하지 않고 바로 좌항의 값을 반환합니다. 좌항이 Falsy 값일 경우, 우항을 평가하여 그 결과를 반환합니다.
2. || (OR) 연산자의 단락 평가
function returnFalse() {
console.log("False함수");
return false;
}
function returnTrue() {
console.log("True함수");
return true;
}
console.log(returnFalse() && returnTrue());
- returnFalse 함수가 먼저 호출되어 False함수 메시지를 출력후 false를 반환한다.
- 좌항이 Falsy값이기 때문에 우항을 평가하지 않아 returnTrue()함수는 호출되지 않는다.
console.log(returnTrue() && returnFalse());
- returnTrue 함수가 먼저 호출되어 True함수 메시지를 출력한 후 true를 반환한다.
- && 연산자는 좌항이 Truthy값일 경우 우항을 평가해 returnFasle() 함수도 호출된다.
function returnFalse() {
console.log("False함수");
return undefined;
}
function returnTrue() {
console.log("True함수");
return 100;
}
console.log(returnTrue() || returnFalse());
returnFalse()
- False함수 메시지를 출력하고 undefined를 반환한다.
returnTrue()
- True함수 메시지를 출력하고 100을 반환한다.
returnTrue()함수가 먼저 호출되고 True함수 메시지를 출력한후 100을 반환하는데 좌항이 Truthy값이라면 우항을 평가하지 않는다. 100은 Truthy값으로 returnFalse함수는 호출되지 않는다.
3. 단락평가 예제
function printUserName(person) {
const name = person && person.name;
console.log(name || "person의 값이 없습니다.");
}
printUserName();
printUserName({ name: "AR" });
person && person.name
- persion이 전달되었을 때만 persion.name을 사용한다.
- name이 없다면 person의 값이 없습니다. 라는 기본 메시지를 출력하게된다.
printUserName();
- person을 전달하지 않아 undefined가 된다.
&&연산자
- person && person.name 에서 person이 존재하면 person.name의 값을 그렇지 않을 경우 undefined로 처리된다.
||연산자
- console.log(name || "person의 값이 없습니다."); 에서 name이 없다면 메지시를 출력하게된다.
'WEB > JavaScript' 카테고리의 다른 글
JavaScript - Spread연산자와 Rest매개변수 (15) (0) | 2024.08.20 |
---|---|
JavaScript - 구조분해할당(Destructuring Assignment) (14) (0) | 2024.08.20 |
JavaScript - Truthy와 Falsy (12) (0) | 2024.08.15 |
JavaScript - 배열 (11) (0) | 2024.06.30 |
JavaScript - 객체 (10) (0) | 2024.06.30 |