请教JavaScript代码中参数作用及购奶数量计算逻辑
代码疑问解答
关于startingMoney和startingAmount的作用
- 这两个都是函数的参数名,本质就是用来接收调用函数时传入的「初始金额」,只是在不同函数里起了不同名字:
calcBottles里的startingMoney:接收手头的总钱数(比如例子里的6),专门用来计算能买多少瓶牛奶calcChange里的startingAmount:同样接收总钱数,用来计算买完牛奶后剩下的零钱
- 简单说:就像你给不同的人递钱,给卖奶的和找零的描述的都是自己的总钱数,只是换了个称呼而已。你要是把这俩名字改成一样的(比如都叫
totalMoney),代码功能完全不受影响。
购奶数量的计算逻辑
看calcBottles函数里的核心代码:
var numberOfBottles = Math.floor(startingMoney / costPerBottle);
拆解一下:
startingMoney / costPerBottle:用总钱数除以每瓶牛奶的单价,得到理论上的购买数量(比如6元买2元一瓶的,6/2=3)Math.floor():这个方法是向下取整,意思是不管小数部分是多少,都只取整数部分。比如你有7元,每瓶2元,7/2=3.5,Math.floor(3.5)会得到3——因为没法买半瓶牛奶,所以最多只能买3瓶。
补充:代码完整运行流程
当执行getMilk(6, 2)时:
- 先调用
calcBottles(6,2),算出能买3瓶,打印"buy 3 bottles of milk" - 再调用
calcChange(6,2),用取余运算6%2得到0(也就是没有零钱),把0返回给getMilk - 最后
console.log把返回的0拼进字符串,打印"Hello master, here is your 0 change"
内容的提问来源于stack exchange,提问作者Kavan Trivedi
相关产品推荐
相关产品推荐

