【发布时间】:2016-01-23 19:11:25
【问题描述】:
我得到了一个运行良好的简单脚本:
var PHONE_PRICE = 20.5,
ACCESSORIES_PRICE = 12.2,
TAX_RATE = 0.098,
THRESHOLD = 30,
MIN_PURCHASE = taxed(PHONE_PRICE, TAX_RATE);
var balance = prompt("your balance"), phoneQt = 0, accessoriesQT = 0;
function taxed(purchase, tax) {
return purchase * (1 + tax);
}
/*
* If the amount of total purchase exceed the balance,
* the buying stops.
*/
// MIN_PURCHASE prevent the buying to reduce your balance to negative value, as in -$20
while (true) {
if (balance < MIN_PURCHASE) {
break;
}
balance -= taxed(PHONE_PRICE, TAX_RATE);
++phoneQt;
if (balance >= THRESHOLD) {
balance -= taxed(ACCESSORIES_PRICE, TAX_RATE);
++accessoriesQT;
}
}
console.log("You've bought " + (phoneQt + accessoriesQT) + " item");
console.log("And your balance is $" + balance.toFixed(2));
如果余额为100,则结果为:
You've bought 4 item
And your balance is $9.96
但是,当我像这样更改 while 语句时,我得到了一个意想不到的结果:
while (balance > MIN_PURCHASE) {
balance -= taxed(PHONE_PRICE, TAX_RATE);
phoneQt++;
if (balance >= THRESHOLD) {
balance -= taxed(ACCESSORIES_PRICE, TAX_RATE);
accessoriesQT++;
} else {
break;
}
}
我得到的结果是:
You've bought 1 item
And your balance is $77.49
我认为while语句求值有问题,但不知道怎么解决。
【问题讨论】:
-
实际上,您的两个示例都可以正常工作,至少在 Firefox 上是这样,并且都给出了 您购买了 5 件商品,余额为 5.68 美元您在哪个浏览器/环境中进行了测试他们?
-
@rpadovani 谷歌浏览器
-
不,第二个代码是错误的,它不会让您购买最后一件商品,因为它会花费您余额中的金额。但是,从问题中的代码和值开始,您发布的所有结果都毫无意义
标签: javascript while-loop evaluation decrement