JavaScript: document.createElement ('') и удаляют DOMElement

Все текущие ответы используют литеральную строку, которую я предпочитаю не иметь в своем коде, если возможный - это не делает (и обеспечивает ценное семантическое значение, для начальной загрузки):

function isFunction(possibleFunction) {
  return typeof(possibleFunction) === typeof(Function);
}

Лично, я пытаюсь сократить количество строк, бродящих вокруг в моем коде...

<час>

кроме того, в то время как я знаю, что typeof оператор и не функция, существует мало вреда в использовании синтаксиса, который заставляет его появиться как последний.

48
задан Gary Green 4 December 2009 в 04:18
поделиться

2 ответа

Это будет варьироваться от браузера к браузеру, однако ключевое слово javascript delete не имеет ничего общего с методом DOM createElement . Нет необходимости использовать delete .

Что произойдет, так это то, что ссылка на элемент, который в настоящее время содержится в createdElement , будет удалена сборщиком мусора. Теперь в случае IE это будет означать, что счетчик ссылок элемента будет сброшен до 0, поэтому он уничтожит себя и освободит свою память. Другие браузеры делают что-то по-другому, обычно элементы в DOM сами являются объектами, собирающими мусор, и будут удалены во время того же (или, возможно, специфичного для DOM) цикла GC.

37
ответ дан 7 November 2019 в 12:43
поделиться

После завершения функции больше нет ссылки на объект, т.е. если сборщик мусора работает правильно, его следует собрать (есть ошибка IE, которая не позволяет собирать объекты с циклическими ссылками если задействованы узлы DOM).

Кроме того, ваш код не работает, поскольку локальные переменные не могут быть удалены: попытка сделать это даже приведет к синтаксической ошибке в строгом режиме ES5.

11
ответ дан 7 November 2019 в 12:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: