Что в моем решении не так?
Только начал изучать javascript. Сломал голову над задачкой от sololearn. В чем мои ошибки?
Данная программа должна высчитать годовой доход по займу.
Она должна соответствующим образом использовать в качестве вводных данных сумму займа и годовую процентную ставку, а затем создать заем в качестве объекта.
Завершите функцию вне конструктора для расчета годового дохода, после этого закрепите это значение за соответствующим полем (вам также необходимо его создать) конструктора для получения результата.
Пример вводных данных
15000
20
Пример результата
3000
Пояснение
Результат – это годовой доход по займу, где первоначальная сумма равна 15 000, а 20% - годовая процентная ставка: 20/100*15000 = 3000.
В конструкторе вы должны создать новое свойство для хранения возвращаемого из вычислительной функции значения дохода за год.
Вот одно из моих решений:
function main() {
//получите первоначальную сумму и процент
var amount = parseInt(readLine(), 10);
var yearPercent = parseInt(readLine(), 10);
var loan1 = new Loan(amount, yearPercent);
//вывод результата в консоль
console.log(loan1.yearIncome());
}
function Loan(amount, percent) {
this.amount = amount;
this.yearPercent = percent;
//введите код сюда
this.yearIncome = calcYearIncome;
};
function calcYearIncome() {
//завершите функцию для вычисления годового дохода
var yearIncome = yearPercent / 100 * amount;
}
Ответы (1 шт):
чем вам не нравится такое решение (если уж используем современные JS)?
class Loan
{
constructor(amount, percent) {
this.amount = amount;
this.yearPercent = percent;
}
calcYearIncome() {
return this.yearPercent / 100 * this.amount;
}
}
let obj = new Loan(15000, 20);
console.log(obj.calcYearIncome());
P.S.
чтобы ваш код работал, его надо переделать в такой:
function Loan(amount, percent) {
this.amount = amount;
this.yearPercent = percent;
//введите код сюда
this.yearIncome = calcYearIncome(amount, percent);
};
function calcYearIncome(amount, yearPercent){
//завершите функцию для вычисления годового дохода
return yearPercent / 100 * amount;
}
let loan = new Loan(15000, 20);
console.log(loan.yearIncome);
P.P.S.
в вашем же коде есть проблемы тут:
this.yearIncome = calcYearIncome;
Вы в переменную записываете указатель на функцию, а не значение функции. Это можно было бы делать, но тогда вам надо было бы ее вызывать потом так:
loan.yearIncome(x, y)
но вот x, y взять то неоткуда, поэтому такой метод не подходит
И вот тут проблема:
function calcYearIncome(){
//завершите функцию для вычисления годового дохода
var yearIncome = yearPercent / 100 * amount;
}``
функции неоткуда брать переменные yearPercent, amount, а результат yearIncome никуда не сохраняется и остается внутри функции