#javascript
#javascript
Вопрос:
Просто интересно узнать об этом :
В чем разница, или есть ли разница вообще, между :
delete obj.someProperty
и
obj.someProperty=undefined
Ответ №1:
Вторая версия присваивает свойству существующее значение undefined
, в то время как первая удаляет ключ из объекта. Разницу можно увидеть при переборе объекта или использовании in
ключевого слова.
var obj = {prop: 1};
'prop' in obj; // true
obj.prop = undefined;
'prop' in obj; // true, it's there with the value of undefined
delete obj.prop;
'prop' in obj; // false
Ответ №2:
Разница будет реализована при повторном просмотре объекта. При удалении свойства оно не будет включено в цикл, тогда как простое изменение значения на undefined включит его. Длина объекта или количество итераций будут другими.
Вот некоторая отличная (хотя и расширенная) информация об удалении в JavaScript:
Комментарии:
1. Спасибо за ссылку, это то, что я полностью недооценил 🙂
Ответ №3:
Использование delete
фактически удалит сам ключ из объекта. Если вы установите значение в undefined
, ключ все еще существует, но значение — это единственное, что изменилось.
Ответ №4:
Первое фактически удалит свойство, второе оставит его, но установит в undefined
.
Это становится важным, если вы перебираете все свойства ( for (props in obj) { }
) или проверяете существование одного ( if ('someProperty' in obj) {}
)