Front-end/JavaScript

JS) not not 연산자 vs non-null assertion 연산자

오열매 2023. 3. 2. 19:23

not not 연산자와 non-null assertion 연산자는 모두 JavaScript와 TypeScript에서 사용되는 연산자 중 하나이지만, 다른 목적으로 사용됩니다.


1. not not(!!) 연산자

 

not not(!!) 연산자는 Boolean 값을 반환합니다. 이 연산자는 값을 불린값으로 변환할 때 사용됩니다. 이 연산자를 사용하면, 값이 존재하면 true를 반환하고, 값이 존재하지 않으면 false를 반환합니다. 예를 들어, 다음과 같이 사용할 수 있습니다.

const myValue = 0;
const myBoolean = !!myValue; // false

 

 

not not(!!) 연산자는 값이 falsy한 값일 경우 false를 반환합니다. JavaScript에서는 다음과 같은 값을 falsy 값으로 간주합니다.

  • false
  • 0
  • -0
  • 0n
  • "", '', ``
  • null
  • undefined
  • NaN
  •  

not not 연산자에서 값이 존재하지 않는 경우는 null, undefined, 0, 빈 문자열 등 falsy한 값들이 포함됩니다. 하지만, 이 연산자는 null과 undefined를 구별하지 않습니다. 즉, 둘 다 falsy 값으로 취급됩니다.

 


 

2. Non-null Assertion(!) 연산자

 

Non-null Assertion(!) 연산자는 TypeScript에서 사용되며, 값이 null 또는 undefined가 아님을 보장합니다. 이 연산자는 변수 또는 속성 뒤에 붙여서 사용합니다. 이 연산자를 사용하면 TypeScript 컴파일러는 해당 변수 또는 속성이 null 또는 undefined가 아님을 보장합니다. 예를 들어, 다음과 같이 사용할 수 있습니다.

 

const myValue: string | undefined = undefined;
const myNonNullableValue: string = myValue!; // Compile error

 

위 예제에서 myValue 변수는 string 또는 undefined 일 수 있습니다. myNonNullableValue 변수는 myValue 변수의 값이 null 또는 undefined가 아님을 보장하기 위해 ! 연산자를 사용하여 지정했습니다. 그러나 TypeScript 컴파일러는 myValue가 undefined 일 수 있기 때문에 컴파일 에러를 발생시킵니다.

 


 

 

not not(!!) 연산자는 값이 존재하는지 확인하고, non-null assertion(!) 연산자는 값이 null 또는 undefined가 아님을 보장합니다.