Ответ 1
Как правило, нет. Переменные, объявленные с помощью var
, являются локальными и собираются при сборе мусора. Если вы опускаете var
, тогда переменные являются глобальными, а использование ключевого слова delete
может быть полезным для глобальных переменных в некоторых случаях, но, как правило, хорошая практика объявлять все переменные с var
в любом случае, чтобы не загрязнять window
namespace.
delete
может быть полезна при использовании наследования на основе прототипа, например:
function myclass() {
this.variable = 'myvalue'
...
delete this.variable // finished with this variable
}
var inst = new myclass()
Имейте в виду, что если inst
удаляется или выходит из области видимости (сборщик мусора), все атрибуты в нем также будут удалены. delete
также может быть полезен для удаления элементов из хеш-таблиц:
var d = {}
d['blah'] = 'myvalue'
...
delete d['blah']
Есть некоторые ошибки в сборке мусора, специфичные для браузера. Иногда IE имеет проблемы с очисткой атрибутов в элементах DOM и закрытиях и т.д., Хотя многие из этих проблем были уменьшены в IE8, я считаю.