Присваивание JS

Рейтинг: 0Ответов: 1Опубликовано: 04.03.2015

Добрый день!

Не могу понять, как происходит присваивание в JS. Написал ~700 строчек кода, в последующем была обнаружена некорректная работа программы. Суть в следующем:

  var begindate = new Date(2015,2,3,8,0,0);
  ...
  if(begindate.getHours() == 8)
  {
  var time = begindate;
  ...
  alert(begindate); // Mon Mar 3 2015 00:08:00 GMT+0300 (Московское время (зима))
  time.setHours(time.getHours() + Math.floor(gen)); //gen - случайная величина
  alert(begindate); // Mon Feb 23 2015 00:11:00 GMT+0300 (Московское время (зима))

Собственно, мне интересно, почему я меняю значение time, а вместе с ним меняется значение begindate?

Ответы

▲ 2

Дело в том, что begindate и time - это переменные - ссылки, которые ссылаются на один и тот же объект. Поэтому если поменять значение в одной переменной оно изменится и в другой.

Подробнее можно почитать здесь: http://learn.javascript.ru/object#передача-по-ссылке