본문으로 바로가기

자바스크립트의 논리연산자 중 NOT연산자인 (느낌표)는 입력값을  boolean으로 변환하여 값이 true이면 false로 , false이면 true로 값을 리턴합니다.

 

그럼 !!(느낌표 두개)는 어떤 경우에 사용하는 걸까요? 조건문에서 사용할 경우 부정의 부정이면 긍정이라 조건식에는 변함이 없을 것 같은데 뭔가 다르게 적용 되는 걸까요?  먼저 간단한 예시로 조건문에서 어떻게 적용되는지 알아보겠습니다.

 

("str")	  //true("str")
!("str")  //false
!!("str") //true

("")	//false("")
!("")	//true
!!("")	//false

true	//true
!true	//false
!!true	//true

false	//false
!false	//true
!!false	//false			

NaN	//false(NaN)
!NaN	//true
!!NaN	//false

undefined	//false(undefined)
!undefined	//true
!!undefined     //false

null 	//false(null)
!null	//true
!!null	//false

0	//false(0)
!0	//true
!!0	//false

777	//true(777)
!777	//false
!!777	//true
예상대로 조건문에서는 기존 데이터를 그대로 사용했을때와 !! 사용시 결과는 변함이 없습니다. 그럼 도대체 어떤 용도일까요? 
 
자바스크립트에서 느낌표두개(!!)는 다른 타입의 데이터를 boolean 타입으로 명시적으로 형 변환(Type Conversion)하기 위해 사용합니다. 
var a = "test";	      //a: "test" (조건문 적용시 true)
var b = !"test";      //b: false
var c = !!"test";     //c: true

 자바 스크립트는 아래의 기본 타입 데이터 6가지는 false, 이 외에는 모두 true 가 됩니다. 사실상 조건문에서 비교할때는 자동으로 boolean 타입으로 변환해 주기 때문에 조건문에서 사용시에서는 큰 의미를 찾지 못했습니다. 

 

””

 빈 문자열

 false

 기본 boolean false

 NaN

 Not a Number

 undefined

 정의되지 않은 값

 null

 Null값

 0

 숫자 기본값