#javascript
Вопрос:
Почему присвоение неписаному свойству изначально возвращает обновленное значение?
В приведенном ниже примере мы обновляем свойство, недоступное для записи. Как и ожидалось, значение фактически не обновляется. Как ни странно, выражение с оператором присваивания ДЕЙСТВИТЕЛЬНО возвращает обновленное значение. Почему это так? Я бы ожидал, что оператор присваивания вернет левое значение, которое является obj.foo
значением.
Документы MDN для Object.defineProperty, в том числе, когда свойство недоступно для записи.
let obj = {};
Object.defineProperty(obj, 'foo', {
value: 'Hello'
};
console.log(obj.foo = ' World!'); // Returns 'Hello World!'
console.log(obj.foo); // Returns 'Hello'
Комментарии:
1. Что вы подразумеваете под «возвратами»? Как вы оцениваете стоимость недвижимости?
2. Значение выражения присваивания-это присвоенное значение, правая часть-в данном случае, как это фактически
obj.foo = obj.foo ' World!'
,'Hello World!'
оно не возвращает обновленное значениеobj.foo
, потому что, как вы заметили, это значение не обновляется.3. @jonrsharpe — а! Я никогда этого не знал, я всегда думал, что операторы присваивания возвращают левую часть, а не вычисляемое значение, которое должно быть присвоено. Это дико, спасибо.
4. @Code-Ученик — обновил вопрос, я просто консоль. регистрация
5. @DonP Знакомы ли вы с разницей между значением l и значением r? Это ключ к пониманию того, почему присвоение оценивается значением, назначаемым справа, а не значением переменной, назначаемой слева.