the double exclamation mark for in JavaScript / 자바스크립트 이중 느낌표

yezo cha·2021년 6월 18일
0

JavaScript

목록 보기
16/19
post-thumbnail

자바스크립트 코드에서 이중 느낌표(!!)를 본 적이 있다면 그 용도와 기능이 궁금할 것이다.
간단하게 생각하자.
it's short way to cast a variable to be a boolean(true or false) value.

typeof JavaScript != 'static'

자바스크립트는 정적 언어가 아니라 동적 언어다.
즉, 변수는 모든 유형의 값을 참조하거나 가질 수 있고 언제든지 변경할 수 있다.

자바스크립트에는 다양한 데이터 유형이 있는데, 그 중 boolean을 생각해보자.
boolean 데이터 타입은 0(거짓) 또는 1(참)과 같은 단순한 비트값이므로, 모든 데이터 유형 중 가장 단순하다.

느낌표를 이중으로 사용하는 이유는 무엇일까?

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

그럼 이중 느낌표는 어떤 경우에 사용할까?

이중 느낌표 연산자(!!)는 확실한 논리 결과를 내기 위해 사용한다.
다른 타입의 데이터를 boolean 타입으로 명시적으로 형 변환 하기 위해 사용한다.
예를 들어, 정의되지 않은 변수 undefined 값을 가진 내용의 논리 연산 시에도 확실한 true/false 값을 가지도록 하는게 목적이다.

let a = 'test';		// a: 'test'
let b = !'test';	// b: false
let c = !!'test';	// c: true

undefined(정의되지 않은 값), ""(빈 문자열), 0, null, NaN(Not a Number), 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
profile
(ง •̀_•́)ง

0개의 댓글