본문으로 바로가기
728x90

자바스크립트에서 객체의 속성을 삭제하는 방법으로는 delete 연산자를 사용하거나 속성 값을 null 또는 undefined로 설정하는 방법이 있습니다. 그러나 이 두 가지 방법 간에는 성능 차이가 있습니다.

TL;DR

  • 보편적인 시나리오에서는 속성을 null 또는 undefined로 설정하는 것이 간편하며 성능 차이가 미미합니다.
  • delete는 특정한 속성 제거나 열거 동작과 관련이 있을 때 선택합니다.

 

성능 고려 사항:

  1. 메모리 할당 해제:
    • 객체 속성을 null 또는 undefined로 설정하면 해당 속성이 즉시 사용 중이 아닌 것으로 표시되지만, 메모리는 즉시 해제되지 않습니다.
    • 일반적으로 JavaScript 엔진은 사용하지 않는 메모리를 식별하고 회수하기 위해 가비지 컬렉션을 사용합니다. 가비지 컬렉션은 주기적으로 실행되는 백그라운드 프로세스로, 실제 메모리 할당 해제는 이 프로세스 중에 발생합니다.
  2. delete 연산자:
    • delete 연산자는 일반적으로 속성을 null 또는 undefined로 설정하는 것보다 느릴 수 있습니다.
    • delete 연산자는 속성을 완전히 제거하고 속성 열거 중 (예: for...in 루프)에 표시되지 않도록 하려는 경우 유용합니다.
    • 그러나 실제로 일상적인 시나리오에서는 성능 차이가 미미합니다.

 

delete 사용 시기:

  1. 속성 제거:
    • 객체에서 특정 속성을 제거하려면 delete를 사용하고 해당 속성이 완전히 제거되기를 원할 때 유용합니다.
    • 특히 더 큰 시스템이나 라이브러리의 일부인 객체를 다룰 때 이는 관련이 있을 수 있습니다.
  2. 속성 열거:
    • 속성이 열거 중에 나타나지 않도록하려면 (for...in 루프에서) delete 사용이 유효한 옵션입니다.

 

결론:

  • 보편적인 시나리오에서는 속성을 null 또는 undefined로 설정하는 것이 간편하며 성능 차이가 미미합니다.
  • delete는 특정한 속성 제거나 열거 동작과 관련이 있을 때 선택합니다.

 

성능 비교

https://github.com/2bro2/object-delete-null

 

참조하면 좋은 글

https://ko.javascript.info/garbage-collection