728x90
자바스크립트에서 객체의 속성을 삭제하는 방법으로는 delete 연산자를 사용하거나 속성 값을 null 또는 undefined로 설정하는 방법이 있습니다. 그러나 이 두 가지 방법 간에는 성능 차이가 있습니다.
TL;DR
- 보편적인 시나리오에서는 속성을 null 또는 undefined로 설정하는 것이 간편하며 성능 차이가 미미합니다.
- delete는 특정한 속성 제거나 열거 동작과 관련이 있을 때 선택합니다.
성능 고려 사항:
- 메모리 할당 해제:
- 객체 속성을 null 또는 undefined로 설정하면 해당 속성이 즉시 사용 중이 아닌 것으로 표시되지만, 메모리는 즉시 해제되지 않습니다.
- 일반적으로 JavaScript 엔진은 사용하지 않는 메모리를 식별하고 회수하기 위해 가비지 컬렉션을 사용합니다. 가비지 컬렉션은 주기적으로 실행되는 백그라운드 프로세스로, 실제 메모리 할당 해제는 이 프로세스 중에 발생합니다.
- delete 연산자:
- delete 연산자는 일반적으로 속성을 null 또는 undefined로 설정하는 것보다 느릴 수 있습니다.
- delete 연산자는 속성을 완전히 제거하고 속성 열거 중 (예: for...in 루프)에 표시되지 않도록 하려는 경우 유용합니다.
- 그러나 실제로 일상적인 시나리오에서는 성능 차이가 미미합니다.
delete 사용 시기:
- 속성 제거:
- 객체에서 특정 속성을 제거하려면 delete를 사용하고 해당 속성이 완전히 제거되기를 원할 때 유용합니다.
- 특히 더 큰 시스템이나 라이브러리의 일부인 객체를 다룰 때 이는 관련이 있을 수 있습니다.
- 속성 열거:
- 속성이 열거 중에 나타나지 않도록하려면 (for...in 루프에서) delete 사용이 유효한 옵션입니다.
결론:
- 보편적인 시나리오에서는 속성을 null 또는 undefined로 설정하는 것이 간편하며 성능 차이가 미미합니다.
- delete는 특정한 속성 제거나 열거 동작과 관련이 있을 때 선택합니다.
성능 비교
https://github.com/2bro2/object-delete-null
참조하면 좋은 글
'software engineering > javascript' 카테고리의 다른 글
[Knip] Find unused files, dependencies and exports in JavaScript and TypeScript projects (0) | 2024.02.03 |
---|---|
using, satisfies in typescript (0) | 2023.10.30 |
forEach is BAD! (0) | 2023.10.03 |
Package Manager 뭐 써볼까? (0) | 2023.09.21 |
void 언제 쓸까? (0) | 2023.08.27 |