아랄라랄라
R 스토리
아랄라랄라
전체 방문자
오늘
어제
  • All (197)
    • Web (144)
      • Markup | WEB (9)
      • Styles (45)
      • javascript (32)
      • jquery (28)
      • vue (16)
      • react (10)
      • more (4)
    • IT (31)
      • CS (3)
      • git hub (5)
      • UI | UX (18)
      • more (5)
    • ETC (22)
      • 이슈노트 (12)
      • 스터디 (10)
      • 아랄라 ☞☜ (0)
      • JOB🛠 (0)

인기 글

반응형
hELLO · Designed By 정상우.
아랄라랄라

R 스토리

[자바스크립트] Optional Chaining 연산자(?.)
Web/javascript

[자바스크립트] Optional Chaining 연산자(?.)

2023. 1. 18. 09:45

 

 

 

Optional Chaining 연산자(?.)는 JavaScript에서 사용되는 연산자로,

객체의 프로퍼티나 메서드를 사용할 때 객체가 undefined 또는 null인 경우 에러를 방지하기 위해 사용된다.

 

즉, 객체에 프로퍼티나 메서드가 존재하면 그 프로퍼티나 메서드를 사용하고, 존재하지 않는다면 undefined를 반환한다.

 

 

 

 

예를 들어,

let person = {name: "John", age: 25};

// undefined
console.log(person.address?.street); 

// TypeError: Cannot read properties of undefined (reading 'street')
console.log(person.address.street);

`person` 객체에 `address` 프로퍼티가 없으므로 `undefined`가 출력된다.

 

 

 

반면에,

let person = { name: "John", age: 25, address: { street: 'main st'} };
console.log(person.address?.street);

`person`객체에 `address` 프로퍼티가 있고, 그 프로퍼티에는 `street` 프로퍼티가 있으므로, `main st`가 출력된다.

 

위와 같은 경우 일반적으로 if문으로 검사하여 프로퍼티가 있는지 확인할 수도 있지만,

Optional Chaining 연산자를 사용하면 간결하고 가독성 좋은 코드를 작성할 수 있다.

 

 

 

 

 

 


 

 

 

 

 

❗ 최근에 추가됨
스펙에 추가된 지 얼마 안 된 문법입니다. 구식 브라우저는 폴리필이 필요합니다.

 

❗ 옵셔널 체이닝을 남용하지 마세요.

?.는 존재하지 않아도 괜찮은 대상에만 사용해야 합니다.사용자 주소를 다루는 위 예시에서 논리상 person은 반드시 있어야 하는데 address는 필수값이 아닙니다. 그러니 person.address?.street를 사용하는 것이 바람직합니다.실수로 인해 person에 값을 할당하지 않았다면 바로 알아낼 수 있도록 해야 합니다. 그렇지 않으면 에러를 조기에 발견하지 못하고 디버깅이 어려워집니다.

 

❗ ?.앞의 변수는 꼭 선언되어 있어야 합니다.

변수 persons가 선언되어있지 않으면 persons?.address 평가시 에러가 발생합니다.
let person = {name: "John", age: 25};

// ReferenceError: persons is not defined
console.log(persons.address?.street);

 

 

 

 

 

 

 

 


참고 : 

https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Operators/Optional_chaining

 

Optional chaining - JavaScript | MDN

optional chaining 연산자 (?.) 는 체인의 각 참조가 유효한지 명시적으로 검증하지 않고, 연결된 객체 체인 내에 깊숙이 위치한 속성 값을 읽을 수 있다.

developer.mozilla.org

https://ko.javascript.info/optional-chaining

 

옵셔널 체이닝 '?.'

 

ko.javascript.info

 

 

728x90
저작자표시 (새창열림)

'Web > javascript' 카테고리의 다른 글

[자바스크립트] 전개연산자  (0) 2023.04.25
[자바스크립트] DOMContentLoaded, load 차이  (0) 2023.04.14
[자바스크립트] axios  (0) 2022.12.30
[자바스크립트/HTML] Img onerror  (0) 2022.12.13
[자바스크립트] 제어 구문  (0) 2022.01.25

티스토리툴바