본문 바로가기
Typescript

느낌표 두 개(!!)의 의미는? (논리 연산자 NOT)

by shinbian11 2022. 11. 1.

논리 연산자 NOT은 느낌표 기호 (!) 를 이용하여 표현할 수 있습니다.

 

논리 연산자 NOT의 사용방법은 간단합니다. 아래처럼 피연산자 앞에 !를 붙이기만 하면 됩니다.

 

const a = 1;
console.log(!a) // false

NOT 연산자를 1개만 붙였을 경우엔, 피연산자를 boolean 타입으로 변환하고, 그것의 역을 반환하는 역할을 수행합니다.

truthy 값을 false로, falsy 값을 true로 변환하는 역할입니다.

 

 

그렇다면, NOT 연산자를 2개 붙이는 것은 어떤 의미일까요?

다른 타입의 데이터를 boolean 타입으로 명시적 타입 변환 (사용자가 직접 데이터의 타입을 변환) 을 수행한다는 의미입니다.

다시 말해, truthy 값을 true로, falsy 값을 false로 변환합니다.


아래 객체는 truthy 한 값입니다. type은 당연히 object 입니다.

 

const obj = { a : 1 , b : "bat"}; // truthy 값
console.log(typeof obj); // object

 

obj는 object 타입, truthy 값

 


 

 

이 object에 !!를 붙이면 true라는 boolean 값이 됩니다.

 

const obj = { a : 1 , b : "bat"}; // truthy 값
console.log(typeof obj); // object


// truthy (object) -> true (boolean)
const objToBoolean = !!obj;
console.log(typeof objToBoolean); // boolean
console.log(objToBoolean); // true

 

obj에 !!를 적용함. boolean 타입, true 값

 


truthy or falsy한 값을 true or false라는 boolean값으로 바로 바꿔서 어떤 변수에 대입할 때 이용할 수 있습니다.

 

const test = !!flag;

 

위 방법과 아래 두 방법은 같은 결과를 내지만, 위 방법이 보기에 더 편합니다.

 

let test;

if(flag){
	test = true;
} else {
	test = false;
}

 

const test = flag ? true : false;

 

참고한 글

 

https://ifuwanna.tistory.com/278

 

[Javascript] 느낌표 두개(!!) 사용법 (논리 연산자)

자바스크립트의 논리연산자 중 NOT연산자인 (느낌표)는 입력값을 boolean으로 변환하여 값이 true이면 false로 , false이면 true로 값을 리턴합니다. 그럼 !!(느낌표 두개)는 어떤 경우에 사용하는 걸까요

ifuwanna.tistory.com

 

 

https://ko.javascript.info/logical-operators#ref-4247

 

논리 연산자

 

ko.javascript.info