Согласно этой странице MDN, ключевое слово delete
Возвращает false, только если свойство существует и не может быть удалено. Это возвращает true во всех других случаях.
Однако я вижу случаи, когда delete
возвращает true
, несмотря на то, что свойство не удаляется:
delete Window
delete alert
delete dir
delete console
delete 2
delete null
delete {}.x
...
Фактически, почти все свойства window
возвращают true с помощью delete
, что видно из запуска следующего script в about:blank
:
for(a in window) { if(delete window[a]) { console.log(a); } }
Однако большинство свойств window
фактически не удаляются. Каков истинный смысл возвращаемого значения delete
? Почему он возвращает true
для свойств, которые он не удаляет?
(Примечание: меня интересовали бы ссылки на код Chromium, объясняющие поведение delete
.)