자바스크립트의 논리연산자 중 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 |
숫자 기본값 |
'Program > Javascript, JQuery' 카테고리의 다른 글
[Javascript] event preventDefault() stopPropagation() 차이점 (0) | 2021.02.13 |
---|---|
[JQuery] 반복문 each break / continue 사용법 (1) | 2020.02.27 |
[Javascript] submit 인코딩 캐릭터셋 변경, 한글 깨짐 처리( euc-kr / utf-8 ) (2) | 2019.11.13 |
[Javascript/Jquery] form, input 동적 생성 및 submit (1) | 2019.11.11 |
[Javascript] 뒤로가기 막기, 뒤로가기 이벤트 제어 ( pushState / popstate ) (0) | 2019.11.08 |