Подтвердить что ты не робот

В JavaScript, что произойдет, если "удалить" свойство, которого не существует?

Что происходит в JavaScript, если у меня есть переменная, скажем:

var exampleObject = {one:'foo',two:'bar'};

а затем я удалю свойство, которого не существует, a la:

delete exampleObject.seven;

Существует ли стандартный ход действий, который происходит повсюду (ничто, сообщение об ошибке, script и т.д.), или это зависит от какой-либо реализации (движок браузера и т.д.)?

4b9b3361

Ответ 1

Ничего не происходит.

Предполагая, что x = {}, Type(x.y) не является Справочным типом спецификаций (не существует ссылки на свойство, которое не существует). Согласно 11.4.1 Оператор удаления, это соответствует правилу:

  • Пусть ref является результатом оценки UnaryExpression.
  • Если Type (ref) не Reference, верните true.
  • ...

Такое поведение (без действия) существует в течение длительного времени - любая среда, которая ведет себя по-разному, не соответствует требованиям. Из 3-го выпуска ECMAScript Спецификация:

Когда вызывается метод [[Удалить]] из O с именем свойства P, выполняются следующие шаги:

  • Если O не имеет свойства с именем P, верните true.
  • ..

Ответ 2

Если exampleObject является объектом, возвращаемое значение из delete true, даже если свойство не существует.