논리 부정 연산자 - 느낌표 한 개(!)와 두 개(!!)

2023. 10. 11. 14:35프로그래밍 언어/JavaScript

JavaScript의 논리 연산자 중 NOT 연산자인 느낌표(!)는 부정(Negation)을 의미하며 피연산자의 논리 값을 반전시킨다.

즉, 입력값을 boolean으로 변환하여 값이 true면 false로, false면 true로 리턴한다.

 

느낌표 두 개(!!)는 이중 부정(부정의 부정)으로 긍정이 된다.

 

테스트

문자열

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

boolean

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

NaN

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

undefined

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

null

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

숫자

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

조건문에서는 기존 데이터를 그대로 사용했을 때와 !!를 사용했을 때의 결과가 동일하다.

 

 

JavaScript에서 !!다른 타입의 데이터를 boolean 타입으로 명시적 형 변환(Type Conversion)하기 위해 사용한다. 즉, 확실한 논리 결과를 가지기 위해 사용한다.

const a = "str";	// a: 'str' (조건문 적용시 true)

const b = !"str";	// b: false

const c = !!"str";	// c: true

 

JavaScript에서 아래 기본 타입 데이터 6가지는 false, 이 외에는 모두 true가 된다.

"" 빈 문자열
false 기본 boolean false
NaN Not a Number
undefined 정의되지 않은 값
null Null 값
0 숫자 기본값

 

예시

이중 부정을 사용하지 않는 경우

const data = "123";
if (data != undefined && data != "") {
    // 실행 함수
}

이중 부정을 사용할 경우

const data = "123";
if (!!data) {
    // 실행 함수
}

 

동일한 프로세스로 작동하나, 값이 null 또는 undefined인 경우에도 명시적으로 false 값을 얻을 수 있다.

 

 

 

'프로그래밍 언어 > JavaScript' 카테고리의 다른 글

slice, substr, substring 비교  (0) 2023.08.28
디바운싱과 쓰로틀링  (0) 2023.08.03
이벤트 전달 방식  (0) 2022.09.26
클로저(Closure)  (0) 2022.09.22
호이스팅(Hoisting)  (0) 2022.09.22