JS循环迭代,但未传递值
JS loop iterates but value not passed
getBottles()中的循环进行迭代,但不将totalBottles的值传递给main()。我是JS的新手,可能需要一些详细信息的帮助。当运行脚本时,totalBottles返回0。请帮忙。
//main function calls other functions
function main(){
var totalBottles = 0;
var counter = 1;
var todayBottles = 0;
var totalPayout = 0;
var keepGoing = "y";
while(keepGoing == "y"){
getBottles(totalBottles, todayBottles, counter);
calcPayout(totalPayout, totalBottles);
printInfo(totalBottles, totalPayout);
inputStr = prompt("Do you want to run the program again? (Enter y for yes)");
keepGoing = inputStr;
}
}
//getBottles function gets loops to get # bottles each day for a week
function getBottles(totalBottles, todayBottles, counter){
while(counter <= 7){
inputStr = prompt("Enter number of bottles returned for the day:");
todayBottles = parseFloat(inputStr);
totalBottles = totalBottles + todayBottles;
counter = counter + 1;
} return totalBottles;
}
//calcPayout function calculates payout for all bottles returned in a week
function calcPayout(totalPayout, totalBottles){
totalPayout = 0;
totalPayout = totalBottles * .10;
return totalPayout;
}
//printInfo function displays totsl bottles and total payout for week
function printInfo(totalBottles, totalPayout){
alert("Total bottles returned this week: " + totalBottles);
alert("Total payout this week: $" + totalPayout.toFixed(2));
}
main();
您的getBottles函数没有修改您在main中声明的totalBottles变量,因为它被您在getBottles:中声明为参数的局部变量遮蔽
function getBottles(totalBottles, todayBottles, counter) {...} // totalBottles here is a local variable to getBottles as are the other parameters
该函数声明中的totalBottles成为该函数的局部变量,这意味着对totalBottle的任何修改都只能由该函数的主体知道。您从函数中返回该值,但由于从未将该返回值分配给任何对象,因此该值基本上被丢弃。其他函数也是如此,例如calcPayout。你有几个选择。你可以更改你的函数签名,这样你就不再用声明为函数参数的局部变量来掩盖主声明的变量:
function getBottles() {...}
通过这样做,您不会将变量传递给函数,而是只在main():的范围内使用它们
getBottles();
这样,getBottles就对totalBottles、todayBottles和计数器变量形成了一个闭包,这些变量将由getBottlers使用和修改。您的其他选项是分配返回值:
var bottles = getBottles(totalBottles, todayBottles, counter);
然后可以将该值传递到下一个函数中。请记住,您需要对其他功能执行同样的操作。
相关文章:
- 是否“;对于的“;循环迭代遵循JavaScript中的数组顺序
- 从两个基于0的for循环迭代器中获取单个基于0的索引的公式
- JavaScript循环迭代太多
- 在不同数据选项之间循环迭代对象
- 比许多使用JavaScript的循环迭代更有效的解决方案
- While为List值在CSS选择器中循环迭代
- 如何在ajax完成后执行第二次循环迭代
- 通过循环迭代追加文本
- Javascript使用for-in循环迭代器来设置变量
- 循环/迭代要返回的对象数组和字符串数组 - Javascript
- Javascript:我的数组的大小随着每次for循环迭代而减小.为什么
- Knockout foreach 循环迭代相同的数据元素
- 所有属性都设置为上次循环迭代值 [为什么?
- 每次循环迭代强制转换为不同的类型
- 在“for”循环迭代之间添加延迟
- 如何在循环迭代的每三分之一上做一些事情
- Nodejs服务器-通过使循环迭代异步来提高性能
- 使用嵌套的“”循环迭代流星中的集合;forEach”;
- JavaScript循环迭代中的POST之间需要延迟
- 如何在点击函数javascript中显示当前循环迭代