특정 조건을 만족할때, 나머지 피연산자의 평가를 스킵하고 결과를 반환하는 동작을 한다.직접적인 참 값비어있지 않은 문자열빈 배열, 빈 객체(값이 있는 배열과 객체도 참 값임)0이 아닌 숫자직접적인 거짓 값0과 NaN빈 문자열null값undefined값거짓인 경우, 두 번째 피연산자를 평가하지않고 결과를 첫 번째값 으로 반환한다.참인 경우, 결과를 두 번째값 으로 반환한다.참(A) && 참(B) -> 참(B)를 반환
참(A) && 거짓(B) -> 거짓(B)를 반환
거짓(A) && 참(B) -> 거짓(A)를 반환
거짓(A) && 거짓(B) -> 거짓(A)를 반환
console.log(true && "B"); // B
console.log(true && false); // false
console.log(false && "B"); // false
console.log(false && true); // false
// &&와 Truthy한 값을 같이 사용했을때
console.log([] && "빈 배열도 Truthy 인가요?"); // "빈 배열도 Truth 인가요?"
console.log(['1'] && "값이 있는 배열도 Truthy 인가요?"); // "값이 있는 배열도 Truth 인가요?"
console.log({} && "빈 객체도 Truthy 인가요?"); // "빈 객체도 Truth 인가요?"
// &&와 Falsy한 값을 같이 사용했을때
console.log('' && "값이없네요"); // ''
console.log(0 && true); // 0
console.log(-0 && true); // -0
참인 경우, 두 번째 피연산자를 평가하지 않고 결과를 첫 번째값 으로 반환한다.첫 번째 피 연산자가 거짓인 경우, 결과를 두 번째 값으로 반환한다참(A) || 참(B) -> 참(A)를 반환
참(A) || 거짓(B) -> 참(A)를 반환
거짓(A) || 참(B) -> 참(B)를 반환
거짓(A) || 거짓(B) -> 거짓(B)를 반환
// ||와 Truthy한 값을 같이 사용했을때
console.log([] || "빈 배열도 Truthy 인가요?"); // []
console.log(['1'] || "값이 있는 배열도 Truthy 인가요?"); // ['1']
console.log({} || "빈 객체도 Truthy 인가요?"); // {}
// ||와 Falsy한 값을 같이 사용했을때
console.log('' || "값이없네요"); // '값이없네요'
console.log(0 || true); // true
console.log(-0 || false); // false
null또는 undefind일 때만 오른쪽 피 연산자를 반환하고 그 외의 경우에는 왼쪽 피 연산자를 반환한다. const value1 = null;
const value2 = "Hello, World!";
const result = value1 ?? value2;
console.log(result); // "Hello, World!"
null과 undefind일때만 오른쪽 피 연산자를 반환한다는것에 주의하자! console.log(0 || "a"); // "a"
console.log(0 ?? "a"); // 0