@dmptts

Почему объект не ссылается сам на себя?

Добрый день!

Нахожусь в процессе изучения JS по книге "Выразительный Javascript" и не могу понять решение одной из задач из раздела о массивах и объектах.

function arrayToList(array) {
  var list = null;
  for (var i = array.length - 1; i >= 0; i--)
    list = {value: array[i], rest: list};
  return list;
};

console.log(arrayToList([10, 20]));


Почему в данном примере объект при i = 1 не замыкается сам на себе и не становится чем-то вроде
{value: 20, rest: {value: 20, rest: {value: 20, rest: null}}}...
  • Вопрос задан
  • 91 просмотр
Решения вопроса 1
rockon404
@rockon404
Frontend Developer
Изначально переменной list присваивается значение null. Дале, каждую итерацию выполняется код:
list = { value: array[i], rest: list };
Сначала выполняется правая часть выражения, создается объект со свойством value принимающим значение элемента массива по индексу i, и свойством rest принимающим значение list, первую итерацию оно null:
{ value: 10: rest: null };
Ну, а затем созданный объект присваивается переменной list. И так каждую итерацию.

Простой пример как это работает:
var x = 10;

x = x + 5;

Сначала вычисляется правая часть, затем происходит присваивание:
x = 10 + 5;
или:
x = 15;

А так можно сделать ссылку на себя:
var obj = {       // создаем объект доступный по ссылке obj
  prop: 'example prop' 
};

obj.self = obj;  // добавляем в объект свойство self ссылающееся на сам объект
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через TM ID
Похожие вопросы
Biganto Москва
от 130 000 до 130 000 руб.
от 2 500 до 4 000 usd.
HTML Academy Москва
от 85 000 до 100 000 руб.
15 авг. 2018, в 23:38
300 руб./за проект
15 авг. 2018, в 22:39
60000 руб./за проект
15 авг. 2018, в 21:18
30000 руб./за проект