조건문에서 거짓 같은 값(Falsy)로 평가되는 값들
- false: 불리언 값 중 거짓
- null: 아무런 객체 참조도 없는 값
- undefined: 값이 할당되지 않은 상태(변수를 초기화 하지않거나, 함수가 값을 반환하지 않은 경우)
- 0: 숫자 0
- NaN: 숫자가 아님(Not-a-Number)
- '' 또는 "": 빈 문자열
위의 false로 평가되는 값 이외에는 참 같은 값(Truthy)로 평가 받는다.
typeof 연산자: 특정 변수 또는 값의 타입을 `문자열`로 반환
- "undefined": 값이 할당되지 않거나, 선언만 되고 초기화되지 않은 변수의 경우 반환된다.
- "boolean": 불리언 타입의 값.
- "number": 숫자 타입의 값.
- "string": 문자열 타입의 값.
- "object": 객체, 배열, null 등 여러 가지를 포함합니다. (null을 제외한 객체의 경우)
- "symbol": ES6에서 추가된 Symbol 타입의 값.
- "function": 함수 타입의 값.
let x;
console.log(typeof x); // "undefined"
let y = 10;
console.log(typeof y); // "number"
let z = "Hello";
console.log(typeof z); // "string"
부정연산자(`!`)
! (단일 논리 부정 연산자):
이 연산자는 피연산자를 부정합니다. 피연산자가 true이면 false로, false이면 true로 변환합니다.
!! (이중 논리 부정 연산자):
두 번의 부정 연산을 수행합니다. 일반적으로 값이 존재하거나 참인지 확인하기 위해 사용됩니다. 이중 부정을 통해 값이 존재하는지 여부를 불리언으로 변환합니다. 즉, 값이 있으면 true로, 없으면 false로 변환됩니다.
let x;
console.log(typeof x); // "undefined"
console.log(!!typeof x); // false
console.log(!typeof x); // false
let x;
console.log(!(typeof x === 'undefined')); // false
console.log(!!(typeof x === 'undefined')); // true
비교연산자
= : 할당 연산자. 변수에 값을 할당하는 데 사용됩니다.
== : 동등 비교 연산자. 두 값이 동등한지 확인합니다. 데이터 유형이 다를 경우 데이터를 변환하여 비교합니다.
=== : 일치 비교 연산자. 엄격한 동등성을 확인합니다. 값과 유형이 완전히 동일한지 확인합니다.
let num = 5; 숫자5 할당
// num인 숫자5와 문자5비교
console.log(num == '5'); // true 숫자 '5'가 문자열로 형변환됨
console.log(num === '5'); // false 형변환 되지 않고, num인 숫자5와 문자5비교