강의

멘토링

로드맵

Inflearn brand logo image

인프런 커뮤니티 질문&답변

이윤주님의 프로필 이미지
이윤주

작성한 질문수

한 입 크기로 잘라 먹는 리액트(React.js) : 기초부터 실전까지

1.8 연산자 2_null 병합 연산자 (강의 진행 2분 00초) 질문이 생겼습니다!

해결된 질문

작성

·

55

·

수정됨

0

🚨 아래의 가이드라인을 꼭 읽고 질문을 올려주시기 바랍니다 🚨

질문 하시기 전에 꼭 확인해주세요
- 질문 전 구글에 먼저 검색해보세요 (답변을 기다리는 시간을 아낄 수 있습니다)
- 코드에 오타가 없는지 면밀히 체크해보세요 (Date와 Data를 많이 헷갈리십니다)
- 이전에 올린 질문에 달린 답변들에 꼭 반응해주세요 (질문에 대한 답변만 받으시고 쌩 가시면 속상해요 😢)

질문 하실때 꼭 확인하세요
- 제목만 보고도 무슨 문제가 있는지 대충 알 수 있도록 자세한 제목을 정해주세요 (단순 단어 X)
- 질문의 배경정보를 제공해주세요 (이 문제가 언제 어떻게 발생했고 어디까지 시도해보셨는지)
- 문제를 재현하도록 코드샌드박스나 깃허브 링크로 전달해주세요 (프로젝트 코드에서 문제가 발생할 경우)
- 답변이 달렸다면 꼭 확인하고 반응을 남겨주세요

- 강의의 몇 분 몇 초 관련 질문인지 알려주세요!
- 서로 예의를 지키며 존중하는 문화를 만들어가요.
- 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.

 

안녕하세요 선생님

강의 잘 듣고 있습니다!

 

1.8 연산자 2 에서

 

수업을 듣고 저 혼자 해보는 중에 선생님께서 작성하신 문법과 다르게 작성한 식에서 정답이 출력 되었습니다.

제가 적은 문법이 추후에 다른 문법이나 개발을 하는데 충돌이 나거나 에러가 날 수 있는 경우가 생길 지 여쭤보고 싶어서 문의 남깁니다!

 

제가 적은 식은 아래와 같습니다. console 에 찍힌 값 : 10 입니다.

var1 = null;
var2 = 10;
var3 = 30;

console.log((var4 = var1 ?? var2));

답변 1

1

안녕하세요, 인프런 AI 인턴입니다.

이윤주님, 질문해 주셔서 감사합니다. 현재 사용하신 코드는 자바스크립트의 null 병합 연산자(??)를 사용하는 것입니다. null 병합 연산자는 왼쪽 피연산자가 null 또는 undefined일 때 오른쪽 피연산자를 반환합니다.

작성하신 코드에서 var1null이므로, var1 ?? var2var2의 값을 반환하게 됩니다. 따라서 console.log((var4 = var1 ?? var2))10을 출력합니다.

다만 다음과 같은 점에 유의하셔야 합니다:

  1. 변수 선언: 코드에서는 var4라는 변수를 선언없이 사용했습니다. 이는 전역 변수를 생성하기 때문에 다른 코드와 충돌할 확률이 생길 수 있습니다. let이나 const를 사용하여 변수를 명시적으로 선언하는 것이 좋습니다.
   let var4;
   console.log((var4 = var1 ?? var2));
  1. 다른 연산자와의 비교: 가끔 || 연산자와 혼동하는 경우가 있는데, ||falsy 값을 체크하여 false, 0, '' 등도 우측 값을 반환합니다. 이와 달리 ??nullundefined에만 반응하기 때문에 사용할 때 컨텍스트에 따라 적절히 사용되어야 합니다.

이와 관련된 추가적인 학습자료로 참고할 수 있는 유사 답변을 제공합니다:

이해를 돕기 위해 쉽게 설명을 추가해보았습니다. 다른 질문이 있으시면 언제든지 알려주세요.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

이윤주님의 프로필 이미지
이윤주
질문자

와우!

왜 코드 충돌이 있을 수 있는지, || 연산자와의 추가 설명까지 해주셔서 정말 감사합니다.

제가 이해한 해설은 이렇습니다.

<문제와 해설>

값은 나올 수 있으나 유의할 점이 있음

var4라는 변수를 선언없이 사용함

전역 변수를 생성 o

다른 코드와 충돌할 확률 o

let이나 const를 사용하여 변수를 명시적으로 선언하는 것이 좋음

 

++ 추가적으로 알게 된 지식

??nullundefined에만 반응

|| 는 틀린 값인지, 0인지, 빈값인지도 판별함

 

 

제가 이해한 사항에 문제가 있다면 추가 답변을 달아주시기 바랍니다!

이윤주님의 프로필 이미지
이윤주

작성한 질문수

질문하기