В чем причина того, что свойства закрытого объекта не проверяются в условных выражениях?
Например:
// Create a sealed object type
const o = {
Foo: 'Foo',
};
// Access a non-existent property
// Reports an Error
const fooz = o.Fooz;
// Conditional with non-existent property
// Does not report an error
if (o.Fooz === undefined) {}
Просто уточнить - это объект, запечатанный потоком
Я разместил этот вопрос как проблему потока. Я получил ответ:
Несоблюдение не является ошибкой в условном выражении. См. Комментарий от источника.
Исходный комментарий гласит:
Условные выражения проверяются как выражения, за исключением того, что доступ к ресурсам временно разрешен даже тогда, когда такие свойства не существуют. Это позволяет использовать обычную идиому JavaScript для проверки наличия свойства перед использованием этого свойства.
const o = Object.seal({Foo: 'Foo'});
или, возможно,Object.freeze...