Показать сообщение отдельно
  #7 (permalink)  
Старый 25.03.2013, 23:14
Аватар для helpmepls
Интересующийся
Отправить личное сообщение для helpmepls Посмотреть профиль Найти все сообщения от helpmepls
 
Регистрация: 01.03.2013
Сообщений: 12

Сообщение от danik.js Посмотреть сообщение
Пошагово, это вот так:

Видим значения переменных, стек вызовов (можем по ним ходить) выполняем код по строчке.
Благодарю за ответ.

Вопросы:

1. Что именно Вы имели ввиду, под "это чтобы показать что глобальные переменные отслеживать неудобно и за них следует отрывать руки"?

Разве у меня там, где-то, была глобальная переменная?

2. Зачем переменная g = 0 ?

3. Я правильно понимаю, что необходимо ставить точку останова и только после этого, будет доступна возможность выполнять в конкретном месте код пошагово?

4.

function sumTo(n) 

  {
console.log("bla 1 относится к " + n);
  if (n == 1) return n;
console.log("bla 2 относится к " + n);
res=sumTo(n-1) + sumTo(n-1); 
console.log("bla 3 относится к " + n);
return res;
    }

document.write( sumTo(2) );


Начинаю прокручивать в инструментах разработчика в google chrome:

console.log("bla 1 относится к " + n);
  if (n == 1) return n;
console.log("bla 2 относится к " + n);
res=sumTo(n-1) + sumTo(n-1);


далее

console.log("bla 1 относится к " + n);
  if (n == 1) return n; (ДВА РАЗА)


затем одна из рекурсий завершает свое выполнение и
получается вторая единица

console.log("bla 1 относится к " + n);
  if (n == 1) return n; (ДВА РАЗА)


затем рекурсия прекращает свою работу НО!
когда щелкаю на next function call он еще "перескакивает" на строчку
res=sumTo(n-1) + sumTo(n-1);

и только потом доходит до bla 3.

это завершает свое выполнение основной вызов первый, но почему он переходит на эту строчку (
res=sumTo(n-1) + sumTo(n-1);
) ничего не делая? ведь он должен был ее "пройти" когда инициализировал вызов рекурсий.

5. Я правильно понимаю, что даже если бы функция на была вызвана в теле документа (document.write( sumTo(2) ), она все равно бы посчиталась (использовала бы память)?
Ответить с цитированием