@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}}}...
  • Вопрос задан
  • 214 просмотров
Решения вопроса 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 ссылающееся на сам объект
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы