Не тратьте деньги понапрасну (24/24)

Подскажите что означает и почему выдает ошибку TypeError : getPrice is not a function

код:>

var getPrice = function(time, urgent){
  var pay = 1500 ;
  if (urgent){
    pay = pay*2.5
  time = time / 2
  }
  if (time > 150){
    pay -= 250;
    }
  return getPrice = pay * time ;
  }
  
var getProfitableProject = function (timet, profit){
 var ch = getPrice(timet,true); 
 var che = getPrice(timet,false);
 if (ch > che) {
   return console.log('Выгодней срочный проект. Потратишь на него ' + ch)
   }
  else {return console.log('Выгодней обычный проект. Потратишь на него ' + che)
    }
  }
  1. как программист вы должны понимать какие данные у вас на вводе и какие будут на выводе, а именно по типу.
    getPrice должна возвращать число, а возвращает присваивание (причем самой себя).
  2. где у вас задействован параметр profit?
  3. ch > che так больше или меньше?
  4. нейминг переменных просто ахтунг
  5. вывод getProfitableProject должен быть строкой, а не методом.
  1. не задействован, т.к. максимально упрощал функцию чтобы найти ошибку
  2. больше, да и какая разница, условие можно поменять под ТЗ, тут ведь сама функция не запускается
  3. поменял но опять же смысла не вижу
  4. поменял

теперь выглядит так:
var getPrice = function(time, urgent){
var pay = 1500 ;
if (urgent){
pay = pay*2.5
time = time / 2
}
if (time > 150){
pay -= 250;
}
return getPrice = pay * time ;
}

var getProfitableProject = function (time, profit){
 var first = getPrice(time,true); 
 var second = getPrice(time,false);
 if (first > second) {
   return 'Выгодней срочный проект. Потратишь на него '
   }
  else {return 'Выгодней обычный проект. Потратишь на него '
    }
  }

выдает ту же ошибку TypeError : getPrice is not a function

Что она означает? почему getprice не функция, если сначала задан ее код, который в предыдущей задаче работал без проблем

По поводу первого пункта не совсем понял о чем вы.
попробовал return 1 сделать и return 2 соот-но чтобы потом в зав-ти от числа сравнением вывести строку. Но выдает всю ту же ошибку getprice is not a functions

она означает, что вы первый пункт не выполнили, вы присваиваете, а должны вернуть число. оставьте просто return pay * time ;
соответственно как только сделаете это, у вас вылезет ошибка 2, за ней 3 и 5 (не дописали конкатенацию с переменной, в которой расчет стоимости проекта).

понял, просто в предыдущем задании код зачло поэтому я искал ошибки во второй функции, сейчас поправил первую, ошибки уже другие
сейчас доделаю должно получиться
спс за оперативный ответ

да теперь все ок работает спс

У меня тоже вопрос по этому заданию!
Вот мой код:

var getProfitableProject = function (hours, profit) {
  var fee = 1500;
  
  if (hours > 150) {
    var expenses1 = (fee - 250) * hours;
  } else {
    var expenses1 = fee * hours;
  }
  
  hours /= 2;
  
  if (hours > 150) {
    var expenses2 = ((fee * 2.5) - 250) * hours - profit;
  } else {
    var expenses2 = (fee * 2.5) * hours - profit;
  }
  
  if (expenses1 > expenses2) {
    var result = console.log('Выгодней срочный проект. Потратишь на него ' + expenses2);
    } else {
    var result = console.log('Выгодней обычный проект. Потратишь на него ' + expenses1);
  }
  
  return result;
};

Я конечно понимаю, что я намудрила и все усложнила. Посмотрела видоразбор Леры, у нее конечно все леко и простои и понятно.

НО! Почему мой код не проходит проверку? Ведь результат он считает правильно и выводит строку нужную, но при прохождении проверки мне выдает, что результат моей функции undefined. С чем это связано?

эээ, это криво конечно, но тут надо поправить вывод, не применяя консольный метод просто выведите конкатенацию строки с переменной. перепишите запись в result на строка + переменная.

моё вообще сильно отличается, ближе к Лере

моё
let getPrice = function (hours, isUrgency) {
  let hourlyRate = 1500;
  
  if (isUrgency) {
    hours /= 2;
    hourlyRate *= 2.5;
  }
  if (hours > 150) {
    hourlyRate -= 250;
  }
  
  return hours * hourlyRate;
}  
let getProfitableProject = function(hours, netProfitIfUrgent) {
  let urgentValue = getPrice(hours, true) - netProfitIfUrgent;
  let notUrgentValue = getPrice(hours, false);
  let urgency = 'срочный';
  let expences = urgentValue;
  if (urgentValue > notUrgentValue) {
    urgency = 'обычный';
    expences = notUrgentValue;
  }
  return `Выгодней ${urgency} проект. Потратишь на него ${expences}`;
}

Меня смутил вызов функции из другой функции. Я не думала, что могу сама здать isUrgent - true / false, поэтому так и намудрила))))

ну чтобы было понятнее, при вызове функции getPrice(), аргументом hours передается именно параметр функции getProfitableProject()

т.е. я мог бы с тем же успехом описать функцию getPrice как function (chasiki, isUrgency) {…}

Работает 100%

ar getProfitableProject = function (time, profit) {
var wage = 1500;
var timeUrgent = time;
var wageUrgent = wage;

if(time > 150) {
wage -= 250
}
if ((timeUrgent / 2) > 150) {
wageUrgent -= 250
}

var profitReg = time * wage;
var profitUr = ((timeUrgent / 2) * (wageUrgent *= 2.5)) - profit;

if(profitReg < profitUr) {
return('Выгодней обычный проект. Потратишь на него ’ + profitReg)
}else if(profitReg > profitUr) {
return('Выгодней срочный проект. Потратишь на него ’ + profitUr)
}
};

Чем то похоже, на то, что выше

var getPrice = function (time, urgently) {

  var priceInHour = 1500;

  if (urgently) {
    time /= 2;
    priceInHour *= 2.5;    
  }
  if (time > 150) {
    priceInHour -= 250;
  }
  return time * priceInHour;
}


var getProfitableProject = function (time, profit) {
  
  var fast = getPrice(time, true) - profit;
  var slow = getPrice(time, false);
  
  if (fast < slow) {
    return 'Выгодней срочный проект. Потратишь на него ' + fast;
  }
    return 'Выгодней обычный проект. Потратишь на него ' + slow; 
}
1 лайк
let getPrice = function (time, isUrgent) {
  let rate = 1500;

  if (isUrgent) {
    time /= 2;
    rate *= 2.5;
  }
  
  if (time > 150) {
    rate -= 250;
  }
  
  return time * rate;
}

let getProfitableProject = function (time, profit) {
  const urgentPrice = getPrice(time, true) - profit;
  const notUrgentPrice = getPrice(time, false);

  if (urgentPrice < notUrgentPrice) {
    return 'Выгодней срочный проект. Потратишь на него ' + (urgentPrice);
  }
  
  return 'Выгодней обычный проект. Потратишь на него ' + notUrgentPrice;
}