객체의 프로퍼티나 배열의 요소를 삭제하는 연산자가 delete 입니다. delete 연산자는 변수나 배열 요소, 객체의 프로퍼티를 삭제합니다. 삭제에 성공하면 true를, 아니면 false를 반환합니다.

<script>
  /*
    배열에 대한 예제 
  */
  var arr = ['1', '2', '3'];
  console.log(delete arr[1]);
  // true

  console.log(arr);
  // ["1", empty, "3"]


  /*
    명시적으로 선언된 변수는 삭제 불가
  */
  var str = 1;
  console.log(delete str);
  // false

  console.log(str);
  // 1


  str2 = 2;
  console.log(delete str2);
  // true

  console.log(str2);
  // 오류 발생
</script>

배열이나 객체의 요소를 제거하는 경우 객체나 배열의 값만 제거될 뿐 인덱스는 제거않고 그대로 존재하게 됩니다. 다시 말해 삭제된 배열의 인댁스는 그대로 유지되지만 값이 없는 배열 요소가 됩니다.

배열의 인덱스까지 제거하려면 pop() 이나 shift() 같은 메소드를 이용해야 합니다. 

<script>
  var arr = ['1','2','3'];

  // 두 번째 요소의 값을 제거합니다.
  delete arr[1];

  document.write(arr[0]);
  // 1
  document.write(arr[1]);
  // undefined
  document.write(arr[2]);
  // 3
</script>

이러한 현상은 객체에도 동일하게 나타납니다. 스토리지에서도 delete 연산자를 사용할 수 있습니다.

<script>
  var storage = localStorage;
  storage.setItem('name', '하보니');

  console.log(storage.getItem('name'));
  // 하보니

  delete storage.name;
  console.log(storage.getItem('name'));
  // null
</script>

0 댓글