뚜sh뚜sh

[모던 JavaScript] 2.11 논리 연산자 본문

Language/JavaScript

[모던 JavaScript] 2.11 논리 연산자

뚜sh뚜sh 2022. 12. 15. 18:26

|| (OR)

- 인수 중 하나라도 true이면 true를 반환하고, 그렇지 않으면 false를 반환

 

 

 

첫 번째 truthy를 찾는 OR 연산자 '||'

1. 변수 또는 표현식으로 구성된 목록에서 첫 번째 truthy 얻기

  OR 연산자와 피연산자가 여러 개인 경우: 

  1. 가장 왼쪽 피연산자부터 시작해 오른쪽으로 나아가며 피연산자를 평가

  2. 각 피연산자를 불린형으로 변환 후, 그 값이 true 이면 연산을 멈추고 해당 피연산자의 변환 전 원래 값을 반환

  3. 피연산자 모두를 평가한 경우(모든 피연산자가 false)엔 마지막 피연산자를 반환

alert(1 || 0); // 1
alert(undefined || null || 0); // 0

 

2. 단락 평가

- 단락 평가란 truthy를 만나면 나머지 값들은 건드리지 않은 채 평가를 멈춤

true || alert("not printed"); // true

// 연산자 왼쪽이 falsy일 때만 명령어를 실행하고자 할 때 자주 쓰임
false || alert("printed"); // alert("printed")

 

 

 

&& (AND)

- 두 피연산자가 모두가 참일 때 true 반환, 그 외는 false 반환

- AND 연산자는 첫 번째 falsy를 반환함

- 피연산자에 falsy가 없다면 마지막 값을 반환함

- &&의 우선순위가 ||보다 높음!!

- if를 ||나 &&로 대체하지 말기(가독성 떨어짐)

 

 

 

! (NOT)

- NOT을 두 개 연달아 사용하면 값을 불린형으로 변환할 수 있음

- Boolean을 사용하면 !!를 사용한 것과 같은 결과를 도출할 수 있음

- ! 연산자가 모든 논리 연산자 중에 가장 높음

alert(!!"hello"); // true
alert(!!null); // false

 

 

 

[문제]

1. OR 연산자의 피연산자가 alert라면? 

alert( alert(1) || 2 || alert(3) ); 
// 1 출력 후 alert(1)의 반환값이 undefined라서 2까지 출력됨

 

 

 

Comments