논리 부정 연산자 - 느낌표 한 개(!)와 두 개(!!)
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 |