Computer >> 컴퓨터 >  >> 프로그램 작성 >> JavaScript

이상한 구문, JavaScript에서 `?.`는 무엇을 의미합니까?

<시간/>

예를 들어 '?.'를 이해해 봅시다.

23세의 남성 인간을 설명하는 다음 개체 예를 고려하십시오. -

const being = {
   human: {
      male: {
         age: 23
      }
   }
};

이제 this 객체의 age 속성에 액세스하려고 한다고 가정해 보겠습니다. 아주 간단하죠? 우리는 아래 코드와 같이 접근하기 위해 체이닝을 사용할 것입니다 -

예시

const being = {
   human: {
      male: {
         age: 23
      }
   }
};
console.log(being.human.male.age);

출력

콘솔 출력은 다음과 같습니다 -

23

이제 기술적인 이유로 남성의 속성을 여성으로 변경하거나 다른 것으로 변경한다고 가정해 보겠습니다.

이제 우리의 연결 문에 어떤 일이 발생하면, 인간의 정의되지 않은 속성에 액세스할 수 없다는 typeError가 발생합니다. 이러한 상황에서 코드가 오류를 던지지 않도록 하는 방법이 있습니까? 예, 여기에서 '?.'(선택적 연결이라고도 함)가 구출됩니다.

옵셔널 체이닝이 하는 일은 아주 간단합니다. 정상적인 조건에서 일반적인 체이닝처럼 작동하지만 코드에서 오류를 발생시키는 대신 정의되지 않은 속성에 액세스하려고 하면 체인이 그 자리에서 종료되고 정의되지 않은 상태로 반환되어 나머지 덩어리가 코드가 정상적으로 작동합니다.

마지막 예를 고려하십시오(선택적 연결) −

예시

const being = {
   human: {
      male: {
         age: 23
      }
   }
}
console.log(being?.human?.female?.age);

출력

오류를 발생시키는 대신 출력은 -

가 됩니다.
undefined