Program/Javascript, JQuery
[Javascript] 느낌표 두개(!!) 사용법 (논리 연산자)
IfUWanna
2020. 11. 5. 09:32
자바스크립트의 논리연산자 중 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 |
숫자 기본값 |