Подскажите что означает и почему выдает ошибку 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)
}
}
как программист вы должны понимать какие данные у вас на вводе и какие будут на выводе, а именно по типу. getPrice должна возвращать число, а возвращает присваивание (причем самой себя).
где у вас задействован параметр profit?
ch > che так больше или меньше?
нейминг переменных просто ахтунг
вывод getProfitableProject должен быть строкой, а не методом.
не задействован, т.к. максимально упрощал функцию чтобы найти ошибку
больше, да и какая разница, условие можно поменять под ТЗ, тут ведь сама функция не запускается
поменял но опять же смысла не вижу
поменял
теперь выглядит так:
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}`;
}
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;
}