Я просто заметил следующее странное поведение:
Удаление переменной, которая не определена
> delete a
true
> delete a[0]
ReferenceError: a is not defined
> delete a.something
ReferenceError: a is not defined
> delete a.something[0]
ReferenceError: a is not defined
Удаление подполя поля, которое не существует
> a = {}
{}
> delete a.foo
true
> delete a.bar.something
TypeError: Cannot convert null to object
> a.bar
undefined
У меня есть два вопроса:
- Почему
delete a
работает, покаa
не определен? - Почему удаление
a.bar.something
выдает ошибкуCannot convert null to object
вместоCannot read property 'something' of undefined
(потому чтоa.bar
естьundefined
)?
Согласно документации Оператор delete
удаляет свойство из объекта. Таким образом, ответ для первого вопроса будет заключаться в том, что a
должен быть свойством объекта this
?
При использовании delete a;
в С++ app, this появляется ошибка (и она должна делать) error: ‘a’ was not declared in this scope
.