학습(구)/JavaScript(구)
자바스크립트 - 옵셔널 체이닝
잉아당
2021. 11. 15. 23:28
728x90
옵셔널 체이닝
- 옵셔널 체이닝(?.)을 사용하면 프로퍼티가 없는 중첩 객체를 에러 없이 접근할 수 있습니다.
- 옵셔널 체이닝은 ?. 앞 평가대상이 undefined나 null 이면 평가를 멈추고 undefined를 반환합니다.
- 옵셔널 체이닝의 앞 평가대상이 undefined나 null이 아닌 실제 값 존재한다면 뒤의 프로퍼티는 존재해야합니다. 그러므로 프로퍼티 안의 프로퍼티를 검증할 때 주의해야합니다.
let user = null;
alert( user?.address ); // undefined
alert( user?.address.street ); // undefined 이 경우 address가 없을 경우 에러가 발생하므로 조심해야함
- 옵셔널 체이닝은 왼쪽의 평가 대상에 값이 없을 경우 평가를 멈춥니다. 이를 단락 평가라고 합니다. 멈추면 오른쪽의 코드는 실행되지 않습니다.
- 함수의 존재여부가 확실하지 않을 경우 .?()를 사용하여 검증해야 에러 없이 확인할 수 있습니다.
- 객체의 프로퍼티의 존재는 .?[]를 통해 검증할 수 있습니다.
- delete와 함께 사용하면 .? 뒤의 값이 존재하면 삭제할 수 있도록 작성할 수도 있습니다.
- 옵셔널 체이닝은 읽기나 삭제에 사용이 가능하지만 쓰기에는 사용할 수 없습니다. 먼저 평가한 값이 없으면 undefined로 지정이 되고 여기에 대입을 하기 때문에 불가능합니다.