FALSY = [null, undefined, NaN, 0, ""]
TRUTHY = // FALSY 이외의 모든 것
NULLSH = [null, undefined]
같은 결과를 반환한다.
Boolean()
은 Truty, Falsy를 기준으로 boolean 형변환을 해준다.
true
로false
로Not operator !
은 다음과 같이 동작한다.
1. boolean 형변환을 한다.
2. 그 역을 반환한다.
따라서 !!
은 아래와 같이 동작할 것으로 추측되며, 결과적으로 Boolean()
와 동일한 값을 반환하게 된다.
1. boolean 형변환을 한다.
2. 그 역을 반환한다.
3. 반환된 역 boolean 타입의 값을 boolean 형변환하지만 동일한 값이 반환된다.
4. 3의 역을 반환하므로 그 결과는 1과 같다.
체감하기 어려울 정도의 차이겠지만, Boolean()
이 성능상 조금 더 나을 것으로 추정된다.
반면 !!
은 코드 작성시 조금 더 간단히 적을 수 있다.
||
나 &&
은 Truthy, Falsy 값을 기준으로 동작한다.
반면에, nullish 연산자 ??
는 Nullish 값을 기준을 동작한다.