Javascript !!a


Javascript에서 느낌표 두개(!!) 연산자를 사용해서 코드를 작성하는 경우가 종종있는데 어떤 역할을 하는지 궁금했습니다.


알아보니..



Javascript에서 느낌표 두개(!!)를 사용하면 0, null, undefined 등과 같은 정의 되지 않은 변수들을 강제 변환하여 정확한 논리 결과인 true / false를 만들어 줍니다.


아래 코드를 보면 이해가 바로 됩니다.!

let a = 0;
console.log(a);   // 0
console.log(!a);  // true
console.log(!!a); // false

let b = null;
console.log(b);   // null
console.log(!b);  // true
console.log(!!b); // false

let c = undefined;
console.log(c);   // undefined
console.log(!c);  // true
console.log(!!c); // false


이런 식으로 애매한 변수들을 정확한 논리 결과의 표현을 원할때에 사용할 수 있습니다.



아래 코드는 "흠.. 이런 경우엔 어떤 결과가 나올까?" 생각해볼 수 있는 예제입니다.


!!false === false
!!true === true

!!0 === false
!!parseInt("foo") === false // NaN은 false
!!1 === true
!!-1 === true  // -1 는 true

!!"" === false // 빈 문자열은 false
!!"foo" === true  // 일반 문자열은 true
!!"false" === true  // false라는 문자열도 true

!!window.foo === false // 정의 되지 않은 변수는 false
!!null === false // null은 false

!!{} === true  // 빈 객체는 true
!![] === true  // 빈 배열은 true