【问题标题】:Looping and incrementing by 12?循环和递增 12?
【发布时间】:2017-03-04 12:11:27
【问题描述】:

我正在编写一个程序来计算 24、36、48 和 60 个月的每月贷款还款额。

我想知道我应该调用循环内部还是外部的函数,然后将输出放入循环中?

我猜函数应该进入循环,因为我调用了 函数 4 次,这样它就会循环遍历每个函数? 或者,它会只循环每个函数 4 次吗?

我还希望循环从 24 开始,每次递增 12,直到达到 60。所以我在 for 循环代码中试了一下,但我不确定。

代码:

<!DOCTYPE html>
<html>
<head>
<title>Chapter 6 Assignment 2</title>
<meta charset="UTF-8">
<style>
    body{
    background-color: grey;
}
</style>
</head>
<body>
<script type="text/javascript">
vehiclePrice = +prompt("What is the vehicle price? ","");
moneyDown = +prompt("How much are you putting down? ","");
interestRate = +prompt("What is the interest rate for your loan?  ","");

numMonths;
loanAmount = vehiclePrice - moneyDown;
MonthlyRate = interestRate / 1200;

function monthly_due(interestRate, numMonths, loanAmount){ 
    var base = Math.pow(1 + interestRate, numMonths);
    var payment = loanAmount * interestRate / (1 - (1/base));
    return payment
}

//make function calls here? Function needs to be called 4 times for example
//monthly_due(interestRate, 24, loanAmount);
//monthly_due(interestRate, 36, loanAmount);
//monthly_due(interestRate, 48, loanAmount);
//monthly_due(interestRate, 60, loanAmount);

for (var count = 24; count <= 60; count += 12){
    document.write("Number of months: "); 
    document.write("<br>");
    document.write(count); // to display 24, and 12 each time it loops?
    document.write("<br>");
    doucment.write("Monthly Payment: ");
    document.write("<br>");
    document.write(monthly_due(interestRate, 24, loanAmount); //make function call here?
}

【问题讨论】:

  • 您的所有变量都应使用varletconst 声明。在最后一行调用monthly_due 时,您总是超过24 个月,而不是计数
  • 你的代码中有很多错误的code smells;上述缺少声明大部分变量,使用脚本标签上的type 属性并使用document.write。阅读我写的关于 spotting bad JavaScript tutorials 的这篇文章,您可能会受益。
  • 另外,使用unary plus 转换提示中的答案很好,但您可能希望在转换之前测试提示返回的值,如果用户按下取消按钮,它将返回null+null 将强制转换为 0,因此您无需知道它们已取消,而是继续使用零进行计算。也就是说,在生产就绪版本中,您可能希望使用 input 框并检查它们是否已填写而不是提示。

标签: javascript html loops


【解决方案1】:

我愿意这样做:

设置一个数组,其中包含调用函数的月份。 这种方法的好处是,如果您需要在任何其他“时间”(月)调用它,您只需将值添加到数组中即可:

var months = [24, 36, 48, 60];
months.forEach(function (month) {
  console.log(month);
  // call function with parameters
});

我想我想知道我会调用里面的函数吗? 循环我们的外部,然后将我的输出放入循环中?

因此,使用上述解决方案,您需要在循环内调用该函数。但是,如果您还需要在另一个给定时间调用该函数,则只需更改 months 的数组即可。

我猜函数应该进入循环,因为我调用 函数 4 次,这样循环遍历每一个?还是会 每个函数循环 4 次?

它将在给定的时间内调用该函数,它在months的数组中有一个值

【讨论】:

  • 优秀的答案。这样做非常有助于保持代码的可维护性。您可以添加未来可能需要的任意月份数,而不必坚持特定的时间间隔或对其进行大规模重构以支持任意月份。
猜你喜欢
  • 1970-01-01
  • 2019-01-17
  • 1970-01-01
  • 2018-10-08
  • 2014-02-03
  • 2018-12-02
  • 2016-02-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多