!! 연산자는 사실 새로운 연산자가 아니다.
Not 연산자 !를 두번 쓴 것이다.
이렇게 쓰는 이유는 어떤 데이터를 Boolean 데이터 타입으로 변환시키기 위해서다.
let a = 'a'
console.log(a) // a
console.log(!a) // false
console.log(!!a) // true
이렇게 쓰기 위해서는 Truthy와 Falsy에 대해서 이해해야 한다.
Falsy 거짓 같은 값
- 0 : 숫자
- -0 : 음수 0
- false : 거짓
- NaN : 숫자가 아님
- null : 빈 값
- undefined : 아직 정의되지 않은 값 (할당받은 메모리에 원래 있던 값)
- "" : 빈 문자열
- 0n : BigInt()와 같다고 함..
Falsy는 Not 연산자 !가 붙으면 True가 되는 값들이고,
Truthy는 Falsy가 아닌 값 모두이다.
그래서 'a' 값은 Truthy에 해당되기 때문에 !a가 false가 되고, !!a는 true가 된다!