20/20 Испытание:Вечный вопрос. Не определяются переменные


#1

Программа пишет: “Переменная recommendedType не определена.” (string)

“Переменная finalAmount не определена.” (string)

Код:
var initialAmount = 50000;
var duration = 12;
var simplePercent = 7;
var complexPercent = 6;

var calculateDeposit = function (initialAmount, duration, simplePercent, complexPercent) {
var recommendedType, finalAmount;
var simpleAmount = (((simplePercent / 12) / 100 ) * duration + 1) * initialAmount;
for (i = 0; i <= duration - 1; i++) {
var pr = ((complexPercent / 12) / 100) * initialAmount;
initialAmount = initialAmount + pr;
}

  if (simpleAmount > initialAmount) {
    finalAmount =Math.round(simpleAmount);
    recommendedType = 'simple';
  }else {
    finalAmount = Math.round(initialAmount);
    recommendedType = 'complex';
  }

}

Что не так?


#2

Переменные должны быть определены перед функцией.


#3

Поставил перед функцией, результат тот же самый.


#4

Объявите recommendedType прямо внутри условия if или прямо до нее, но никак не внутри функции.


#5

Не работает. (


#6

Странно, видимо валидатор настроен на то, что переменные должны быть объявлены в самом начале. Вот мой валидный код:

var initialAmount = 50000;
var duration = 12;
var simplePercent = 7;
var complexPercent = 6;
var recommendedType = '';
var finalAmount = 0;

var calculateDeposit = function(initialAmount, duration, simplePercent, complexPercent) {
  
  var finalProfitComplex = initialAmount;
  var finalProfitSimple = initialAmount;
  var currentMonth = 1;
  while(currentMonth <= duration) {
      finalProfitComplex += (complexPercent / 1200) * finalProfitComplex;
      currentMonth++;
    }

  finalProfitSimple += (simplePercent / 1200) * duration * initialAmount;

  if(finalProfitComplex > finalProfitSimple) {
    recommendedType = 'complex';
    finalAmount = Math.round(finalProfitComplex);
  }
  else {
    recommendedType = 'simple';
    finalAmount = Math.round(finalProfitSimple);
  }
  console.log('Рекомендуемый тип депозита - ' + recommendedType + '. Итоговый профит - ' + finalAmount);
};

calculateDeposit(initialAmount, duration, simplePercent, complexPercent);

#7

Определил, как у тебя (оставив свой код), всё равно не работает. Наверное глюк, связанный с браузером и кэшем, а последний чистить неохота, все пароли и адреса перевбивать придётся.
Кстати, тип переменных при объявлении можно не указывать, вроде.
Вообщем черт с кодом, он правильный, и точка))


#8

Вытащил весь код из-под функции и заработало. ) Финальное испытание курса “функции” работает без них)


#9

Всем привет.
В задании написано

Осталось только скопировать её из прошлого задания, вызвать с нужными аргументами и сравнить результаты.

То есть вам надо написать функцию и ниже в коде её вызвать. А переменные должны быть объявлены сверху


#10

Спасибо, заработало)) Свои ошибки заметить трудно.