Имеет ли смысл оператор `delete`, если вы воссоздаете то же свойство, которое вы только что удалили? - PullRequest
0 голосов
/ 29 октября 2019

В настоящее время я читаю «Структуры данных и алгоритм с JavaScript» Майкла Макмиллана. На странице 39 он реализует функцию clear для списка, т. Е. Функция очищает элемент списка.

function clear() {
  delete this.dataStore;
  this.dataStore = [];
  this.listSize = this.pos = 0;
}

Не назначит this.dataStore при undefined или null достижениятот же результат? Или почему бы сразу не присвоить пустой массив this.dataStore?

Я прочитал , что delete удаляет свойство из объекта и, если больше нет ссылок на то же свойство, оно в конечном итоге автоматически освобождается.

Как вы можете видеть выше, он удаляет его, а затем воссоздает. Так имеет ли смысл оператор delete, если он все равно не хочет освобождать свойство? Не будет ли просто повторное присвоение this.dataStore с пустым массивом [] более эффективным и одинаково эффективным?

1 Ответ

0 голосов
/ 29 октября 2019

Имеет ли смысл оператор delete, если он все равно не хочет освобождать свойство?

Нет! Возможно, это вызвано то же самое старое заблуждение о том, что делает delete.

Не будет ли просто переназначение this.dataStore = [] более эффективным и одинаково эффективным?

Да, он будет иметь тот же эффект [1] и будет намного более эффективным .

1: при условии, что свойство нене имеет геттер / сеттер или не перечисляется.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...