Javascript 此程序的问题

Javascript 此程序的问题,javascript,function,Javascript,Function,我从一本关于github的书中看到了这个程序: const SPENDING_THRESHOLD = 200; const TAX_RATE = 0.08; const PHONE_PRICE = 99.99; const ACCESSORY_PRICE = 9.99; var bank_balance = 303.91; var amount = 0; function calculateTax(amount) { return amount * TAX_RATE; } func

我从一本关于github的书中看到了这个程序:

const SPENDING_THRESHOLD = 200;
const TAX_RATE = 0.08;
const PHONE_PRICE = 99.99;
const ACCESSORY_PRICE = 9.99;

var bank_balance = 303.91;
var amount = 0;

function calculateTax(amount) {
    return amount * TAX_RATE;
}

function formatAmount(amount) {
    return "$" + amount.toFixed( 2 );
}

// keep buying phones while you still have money
while (amount < bank_balance) {
    // buy a new phone!
    amount = amount + PHONE_PRICE;

    // can we afford the accessory?
    if (amount < SPENDING_THRESHOLD) {
        amount = amount + ACCESSORY_PRICE;
    }
}

// don't forget to pay the government, too
amount = amount + calculateTax( amount );

console.log(
    "Your purchase: " + formatAmount( amount )
);
// Your purchase: $334.76

// can you actually afford this purchase?
if (amount > bank_balance) {
    console.log(
        "You can't afford this purchase. :("
    );
}
// You can't afford this purchase. :(
我的问题是,如果我将银行余额的值更改为更高的值并不重要,但它会一直打印:你买不起这笔钱

我试着让它不打印:你买不起

我做不到。我开始认为这个计划是错误的,但我认为只有我一个人

我知道解决办法很简单,但我看不见也找不到。

它来自你的whileamount
此外,您还可以使用每个现代浏览器中提供的开发人员工具,F12 for Chrome或Firefox将打开它们,您可以在其中放置断点并遵循代码流程。

我不知道该程序要做什么,但对我来说似乎没有多大意义

只要你有钱,它就会买手机,但不会检查你是否有足够的钱买一部额外的手机。 因此,在while循环的最后,你把全部的钱都花在了手机上,或者更可能花得比你更多

除此之外还有附加费和税收。所以最终,你将永远买不起你的东西

无论你把平衡提高多高,程序的编写都是为了超越平衡

该程序可能会更好地与线


虽然amount+PHONE_PRICE+calculateTaxamount+PHONE_PRICE您不断添加新手机和配件,直到达到总金额。我猜总成本与金额非常接近,因此当你在上面加上税时,它就超过了限额,你会看到这条信息。我建议你把电话价格和税进行比较。比如:

while (amount + PHONE_PRICE + calculateTax( PHONE_PRICE ) < bank_balance) {
    // buy a new phone!
    amount = amount + PHONE_PRICE + calculateTax( PHONE_PRICE );

    // can we afford the accessory?
    if (amount < SPENDING_THRESHOLD) {
        amount = amount + ACCESSORY_PRICE;
    }
}
提及
打开浏览器控制台查看消息。

程序没有错,很简单:

var bank_balance = 303.91;
这是全球性的。假设你提供

amount = 200;
amount = amount + calculateTax( amount );
amount = 200 + calculateTax(200);
若您检查条件,您可以看到金额大于输入的金额。这就是你买不起东西的原因

if (amount > bank_balance) {
    console.log(
        "You can't afford this purchase. :("
    );
}

添加一些安慰。日志在这里和那里看看发生了什么。你有没有考虑在选择多少手机时忽略的税款?如果可能与继续购买电话,而你仍然有钱评论:-坦白说,该计划有点愚蠢——它不断增加支出,直到接近阈值,然后增加税收,接管了它。找一本更好的书@Jamiec我知道,但它是大多数人推荐的一款,加上它的freeIt,甚至在那之前就开始了。他以99.99英镑买了第一部手机,然后以9.99英镑买了配件。由于“数量现在等于109.98,他以99.99的价格购买了另一部手机,数量=209.97,并且没有配件。由于他仍然有钱,他以99.99的价格购买了第三部手机,税前金额达到309.96,这已经超过了他拥有的303.91。检查您在哪里购买产品,直到余额大于金额,然后检查while loop之间的条件是否也会增加您金额的价值,以及在您购买产品之后也增加了循环外的数量值。这是你的错误输出没有配件税?