All'alba vincerò

At dawn, I will win!

Javascript

[JS] 논리 연산자(&& / || / !)

나디아 Nadia 2024. 6. 1. 21:49

논리 연산자

 

AND 연산자 &&

: 둘 다 true면 true

  • 우선순위: AND(&&) > OR(||)

 

 

AND 연산자로 첫 번째 false 찾기

  • AND 연산자가 여러 개인 경우, 첫 번째  falsy 반환
  • falsy가 없다면 마지막 값을 반환
result = value1 || value2 || value3;

 

(1) 왼쪽부터 피연산자를 boolean형으로 변환하며 true 찾기

(2) false면 연산을 멈추고 해당 피연산자의 기존값을 반환 (더 이상 진행하지 않는다.)

(3) false가 없으면 마지막 피연산자 반환

// 첫 번째 피연산자가 truthy이면,
// AND는 두 번째 피연산자를 반환합니다.
alert( 1 && 0 ); // 0
alert( 1 && 5 ); // 5

// 첫 번째 피연산자가 falsy이면,
// AND는 첫 번째 피연산자를 반환하고, 두 번째 피연산자는 무시합니다.
alert( null && 5 ); // null
alert( 0 && "아무거나 와도 상관없습니다." ); // 0

 

 

 

 

OR 연산자 ||

: 둘 중 하나가 true면 true

  • 피연산자가 boolean형이 아니면 boolean형으로 변환

 

 

✨ OR 연산자로 첫 번째 true 찾기

  • OR 연산자가 여러 개인 경우, 첫 번째 truthy 반환
  • truthy가 하나도 없다면 마지막 피연산자를 반환
result = value1 || value2 || value3;

 

(1) 왼쪽부터 피연산자를 boolean형으로 변환하며 true 찾기

(2) true면 연산을 멈추고 해당 피연산자의 기존값을 반환 (더 이상 진행하지 않는다.)

(3) true가 없으면 마지막 피연산자 반환

alert( 1 || 0 ); // 1 (1은 truthy임)
alert( null || 1 ); // 1 (1은 truthy임)
alert( null || 0 || 1 ); // 1 (1은 truthy임)
alert( undefined || null || 0 ); // 0 (모두 falsy이므로, 마지막 값을 반환함)

------------------------

let firstName = "";
let lastName = "";
let nickName = "바이올렛";
alert( firstName || lastName || nickName || "익명"); // 바이올렛

 

 

 

a &&= b : a가 true일 때, a에 b값 할당

a ||= b : a가 false일 때,  a에 b값 할당
a ??= b : a가 undefined/null일 때,  a에 b값 할당

 

 


! (NOT)

: 피연산자를 boolean형으로 변환 ➡ 변환값을 반대로 만듦

alert( !true ); // false
alert( !0 ); // true

 

 

 

!! (NOT 두 개)

: boolean형으로 변환 (= Boolean( ))

alert( !!"non-empty string" ); // true
alert( !!null ); // false

 

 


 

 

논리 연산자

 

ko.javascript.info