Почему в строгом режиме JavaScript чтение свойства только для набора не является ошибкой? - PullRequest
0 голосов
/ 03 декабря 2018

Я недавно узнал , что если я пытаюсь записать в свойство JavaScript, которое имеет get, но не set, оно игнорируется в «неаккуратном режиме», но в строгой ошибкеmode.

OTOH, если я пытаюсь читать только из свойства set, возвращается undefined в обоих режимах.Есть ли причина, по которой это не является ошибкой в ​​строгом режиме?

1 Ответ

0 голосов
/ 03 декабря 2018

Вероятно, из-за обычной практики проверить, имеет ли свойство obj объекта prop значение, выполнив

if (obj.prop) { ...

или

if (obj.prop !== undefined) { ...

Один изцели строгий режим (как указано в MDN):

  1. Устраняет некоторые ошибки без вывода сообщений JavaScript, изменяя их на ошибки типа *

Когда программист пытается установить неустановимое свойство, цель программиста ясна, то есть они хотят установить свойство.Таким образом, двигатель может предупредить вас, выдав ошибку.

Но когда вы делаете obj.prop, намерение не очень ясно.Как и obj.kljasfbbsdbgjksb (ключ, который не определен) также совершенно законно.

Программист пытается получить значение или просто проверить природу obj.prop, выполнив typeof obj.prop, obj.prop === undefined и т. Д.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...