Ответ 1
Ничего не происходит.
Предполагая, что x = {}
, Type(x.y)
не является Справочным типом спецификаций (не существует ссылки на свойство, которое не существует). Согласно 11.4.1 Оператор удаления, это соответствует правилу:
- Пусть ref является результатом оценки UnaryExpression.
- Если Type (ref) не Reference, верните true.
- ...
Такое поведение (без действия) существует в течение длительного времени - любая среда, которая ведет себя по-разному, не соответствует требованиям. Из 3-го выпуска ECMAScript Спецификация:
Когда вызывается метод [[Удалить]] из O с именем свойства P, выполняются следующие шаги:
- Если O не имеет свойства с именем P, верните true.
- ..