새소식

기술 습관/Javascript

[JS 기본 문법] 2.7 형 변환, 2.12 nullish 병합 연산자 '??'

  • -

코테 준비와 함께 JS기본기를 탄탄히 하고자 작성.
자바와 달라서 한 번쯤 짚고 넘어갈 필요가 있거나 내가 몰랐던 JS 기본 문법들을 정리
본 내용은 모두 https://ko.javascript.info/ 내용을 참조하여 작성

형 변환 (Type Conversion)

함수와 연사자에 전달되는 값은 대부분 적절한 자료형으로 자동 변환.
의도적으로 변환(명시적 변환)하고자 하는 경우를 아래에서 서술

// 문자형 변환
let val = 10;
val = String(val);

// 숫자형 변환
let val = "123";
val = Number(val); 
    // 숫자 이외의 글자가 들어가는 경우 그 결과는 NaN 반환
    // null -> 0 / true & false -> 1 & 0
    // 숫자가 될 문자열 앞에 +를 붙여서 변환할 수도 있다.

// 불린형 변환
Boolean(1) // true
Boolean(0) // false
Boolean("String") // 문자열O -> true 문자열"0"도 true 반환
Boolean("") // 빈 문자열 false

nullish 병합 연산자 (nullish coalescing operator)

nullish 병합연산자 ?? 사용 시 짧은 문법으로 여러 피연산자 중 그 값이 확정되어있는 변수를 찾을 수 있다.
a ?? b 일 때 다음과 같이 해석된다.

  • a가 null도 아니고 undefined도 아닌 경우 a
  • 그 외의 경우는 b
    해당 병합연산자 없이 표현하고자 할 경우 다음과 같이 표현된다.
  • x = (a !== null && a !== undefined) ? a : b;

다른 예시로 이름 및 닉네임을 받는데, 사용자가 아무런 정보를 입력하지 않는 케이스를 허용 할 때 작성될 수 있는 코드를 확인해보자

let name = null;  
let nicName = "Developer";

// null이나 undefined가 아닌 첫번째 피연산자  
let user = name ?? nicName ?? "익명의 사용자";

??와 ||의 차이

  • || 는 첫 번째 truthy 값을 반환
  • ?? 는 첫 번째 정의된(defined) 값을 반환
    nullundefined, 숫자 0을 구분해 다뤄야 할 경우 이 차이점은 매우 중요한 역할을 한다.

let height = 0;
console.log(height || 100); // 100
console.log(height ?? 100); // 0

```
||는 0을 falsy 한 값으로 취급. 반면 ??는 정확하게 null값이거나 undefined일 경우에만 100이 된다.

  • 안정성 이슈로 인해 ??&&||와 함께 사용하지 못한다. 혼합하여 사용할 경우 SyntaxError를 마주할 수 있게 되며, 이러한 제약을 피하려면 괄호를 사용해야한다.
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.