while循环给出了意想不到的结果

时间:2015-07-18 09:57:33

标签: javascript

我有这段代码:

var totalMoneyForCredit=150;

// Your Current Billing from Shop
var moneySpent=0;

// Prices of Phones
var samsungPrice=30;
var sonyPrice=22;
var nokiaPrice=22;

// Asseorices for mobile
var charger=5;
var headset=10;


// Ask user for Purchasing Which mobies
while(totalMoneyForCredit>0){
    var order=prompt("Please enter the mobile you want to Purchase");

    if (order==='sam') {
        moneySpent=moneySpent+samsungPrice;
        totalMoneyForCredit=totalMoneyForCredit-samsungPrice;
        if (moneySpent<totalMoneyForCredit) {
            document.write('<b>' +  'The total money Spent till yet is ' + moneySpent + " and the money remaining in credit card is " + totalMoneyForCredit  + "</br>")
        }
        else if(moneySpent>totalMoneyForCredit)
        {
            document.write('Out of Money!!');
        }
    }
}
alert('You ran out of money!');

现在第三次进入sam,它不应该说没钱,因为我在第三次进入后仍然有60个。

但结果是:

The total money spent till yet is 30 and the money remaining in credit card is 120
The total money spent till yet is 60 and the money remaining in credit card is 90
Out of Money!

这是一张快照。 Snapshot 请告诉我我在哪里做错了。 感谢

1 个答案:

答案 0 :(得分:2)

这是因为在每个循环中你都 增加moneySpent 减少totalMoneyForCredit,所以{{1从第三个循环起为真(因为moneySpent>totalMoneyForCredit大于90)。您可能想要做其中一个,而不是两个,或者检查60

另外:不要使用totalMoneyForCredit > 0进行任何互动,它会咬你:如果你曾给浏览器一个呼吸的机会(你不会在那个代码中)和完成解析文档后,下一次调用document.write清除文档并重新开始。

相反,给自己一个这样的功能:

document.write

......并使用它。

为了更好地理解代码运行时的代码,请使用浏览器中内置的调试器,它允许您在代码中放置断点以阻止它,以便您可以查看变量;让您逐步执行语句并查看当时的变量值; Chrome的dev tools 优秀,但Firefox内置了一半不错的内容,或者你可以添加Firebug插件,以及IE&#39; s&#34 ; F12开发人员工具&#34;总比没有好。

还强烈建议在操作员周围放置空格,但这纯粹是一种风格。