dollar
@dollar
Делай добро и бросай его в воду.

Почему код возвращает пустой объект?

var obj = {};
obj.prop = obj = {};


Ведь оператор присваивания правосторонний, то есть сначала выполнится:
obj = {};
А потом:
obj.prop = obj;
Но нет, так оно не работает. И не ясно, почему. В одну строчку не хочет работать. В две строчки - без проблем, а в одну - никак.

Ради интереса проверил, может значения переменных замораживаются перед вычислениями, но вроде нет:
var x=1; x=1+(x=x+1); //3

Немного усложним, но результат тот же:
var obj=1; obj.prop = (obj = {}); //опять пустой {}
var obj=1; obj.prop = (e=>obj = {})(); //снова пустой {}
var obj=1; obj.prop = (function(){ obj = {}; return obj })(); //пустой
  • Вопрос задан
  • 123 просмотра
Решения вопроса 1
dollar
@dollar Автор вопроса
Делай добро и бросай его в воду.
у оператора доступа к свойству приоритет выше
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы