js, !!(Double Exclamation Marks) 연산자의 사용

!, !! Double Exclamation Marks

  • ! 의 경우 부정. !undefined 와 !null 은 true로 반환한다.
  • !! 의 경우 부정의 부정. undefined과 null, false 일 경우 false를 반환한다.
  • !!은 사실상 undefined과 null, false을 한번에 처리하는 아주 편리한 기능이다.
<script>const log = console.log;</script>
<script>
    var a;

    log('----')
    log((a)) // undefined
    log((null)) // null
    log((false)) // false
    log((true)) // true

    log('-- ! --')
    log(!(a)) // true
    log(!(null)) // true
    log(!(false)) // true
    log(!(true)) // false

    log('-- !! --')
    log(!!(a)) // false
    log(!!(null)) // false
    log(!!(false)) // false
    log(!!(true)) // true

    // 참고로 NaN은 IsNaN을 권장하고 있으나 !!로 동작하긴 한다.
    log(parseInt("1") === 1); // true
    log(isNaN(parseInt("a"))); // true
    log(!!parseInt("1") === true); // true
    log(!!parseInt("a") === false); // true
</script>
<html><meta charset="utf-8"></html>