JavaScript에서 !
은 not
의 의미이고, Bool 연산시 true -> false, false -> true로 변환해준다.
그리고 특정한 값 혹은 객체는 false
와 동등하게 취급된다. 즉, if
구문의 조건의 결과로 나올 경우 ''
, null
, undefined
, []
등은 false
로 취급되는 것이다.
하지만 null
등이 false
와 같지는 않다.
경우에 따라 이러한 값을 명시적으로 true
와 false
등으로 비교를 해주는 작업이 필요한데, 이 때 사용할 수 있는 것이 !!
이다.
!
을 사용할 경우 JS에서는 값 혹은 객체를 Bool 타입으로 형변환을 진행한다. 따라서 이떄의 결과값은 true
혹은 false
가 되는데, 이를 다시 돌려주기 위해 !!
으로 !
을 두번 붙여주는 것이다.