[JS] ??와 !!

곽태민·2023년 8월 2일
0

TIL

목록 보기
36/63

??(Nullish Coalescing Operator)

"??" 는 변수가 null 또는 undefined인 경우 대체 값을 지정하는데 사용하는 논리 연산자이다.

이 연산자는 왼쪽 피연산자가 null 또는 undefined일 때만 오른쪽 피연산자를 반환한다. 그 외의 경우는 왼쪽 피연산자를 반환한다.

코드로 예시를 들자면

const someValue = null;
const defaultValue = "Default value";

const result = someValue ?? defaultValue;

console.log(result); // 출럭: "Default value"

위 예제에서 someValuenull이므로 ??연산자는 defaultValue를 반환한다.

하지만 someValue가 0이나 빈 문자열 등 falsy 값이라도, defaultValue가 반환되는 것이 아니라 someValue 자체가 반환된다.

!!(Double NOT Operator)

"!!"Boolean 값을 강제로 변환하는 용도로 사용된다. 이 연산자를 변수나 값 앞에 두 번 사용하면 해당 변수나 값이 Boolean 형태로 변환된다.

이때, 변수 또는 값이 falsy인 경우는 false로, truthy인 경우에는 true로 변환된다.

예를 들면

const number= 10;
const truthyString = "Hi";
const falsyValue = 0;
const falsyString = "";

console.log(!!number); // 출력: true
console.log(!!truthyString); // 출력: true
console.log(!!falsyValue); // 출력: false
console.log(!!falsyString); // 출력: false

위 예제에서, numbertruthyStringtruthy한 값이므로 !! 연산자로 인해 true로 변환되었다.

falsyValuefalsyStringfalsy한 값으므로 !! 연산자로 인해 false로 변환되었다.

이러한 두 가지 오퍼레이터는 각각 null 또는 undefined 인지와 boolean 값으로의 강제 변환을 용이하게 해준다.

Javascript에서 falsy한 값

Javscript에서 falsy한 값은 조건식에서 false로 평가되는 값들을 말한다. 즉, 다음과 같은 값들을 falsy한 값으로 간주된다.

  1. fasle
  2. 0
  3. -0
  4. NaN
  5. null
  6. undefined
  7. ""
profile
Node.js 백엔드 개발자입니다!

0개의 댓글