Javascript-为什么我的函数出现错误 var sheep=prompt(“公园里有多少只绵羊?”); var rangers=prompt(“公园里有多少流浪者?”); 功能饲养员(绵羊、护林员){ 警报(“每个公园管理员应加载”+绵羊*2/管理员+ “今天给他/她的BART喂了1磅(s)”; } feedPerRanger();
你好 我还是个初学者,所以这可能是新手犯的错误。该脚本将提醒用户每个公园管理员将向其BART加载多少饲料。假设每只羊2磅除以护林员的数量。我不断得到以下错误。有人能解释为什么吗 “每个公园护林员今天都应该将一磅(s)的饲料装入其BART。”更改此项:Javascript-为什么我的函数出现错误 var sheep=prompt(“公园里有多少只绵羊?”); var rangers=prompt(“公园里有多少流浪者?”); 功能饲养员(绵羊、护林员){ 警报(“每个公园管理员应加载”+绵羊*2/管理员+ “今天给他/她的BART喂了1磅(s)”; } feedPerRanger();,javascript,function,nan,Javascript,Function,Nan,你好 我还是个初学者,所以这可能是新手犯的错误。该脚本将提醒用户每个公园管理员将向其BART加载多少饲料。假设每只羊2磅除以护林员的数量。我不断得到以下错误。有人能解释为什么吗 “每个公园护林员今天都应该将一磅(s)的饲料装入其BART。”更改此项: <script type="text/javascript"> var sheep = prompt("How many sheeps do we have in the park?"); var rangers = promp
<script type="text/javascript">
var sheep = prompt("How many sheeps do we have in the park?");
var rangers = prompt("How many rangers do we have in the park?");
function feedPerRanger (sheep, rangers) {
alert("Each Park Ranger should load " + sheep*2/rangers +
" lb(s) of feed into his/her BART today.");
}
feedPerRanger ();
</script>
为此:
function feedPerRanger (sheep, rangers) {
alert("Each Park Ranger should load " + sheep*2/rangers + " lb(s) of feed into his/her BART today.");
}
现在它起作用了;但是(在我看来)这不是做你想做的事情的更好的方式
您可以正确使用函数,传递两个通用参数,如下所示:
function feedPerRanger () {
alert("Each Park Ranger should load " + sheep*2/rangers + " lb(s) of feed into his/her BART today.");
}
函数定义接受两个参数
function feedPerRanger(sheep, rangers) {
alert("Each Park Ranger should load " + sheep*2/rangers + " lb(s) of feed into his/her BART today.");
}
var sheep = prompt("How many sheeps do we have in the park?");
var rangers = prompt("How many rangers do we have in the park?");
feedPerRanger(sheep, rangers);
您在通话中未给出任何提示:
function feedPerRanger (sheep, rangers)
(此外,函数名和括号之间没有空格)
在创建函数定义时,为局部变量命名。也就是说,sheep
和ranger
是为传递的参数指定的名称,以便在函数中使用。因此,在创建函数定义时,sheep
和ranger
不是上面创建的变量
有两种方法可以解决这个问题
feedPerRanger ();
function feedPerRanger(){...}
编辑-因为Ian已经更改了参数的名称
function feedPerRanger(sheep, rangers) {
alert("Each Park Ranger should load " + sheep*2/rangers + " lb(s) of feed into his/her BART today.");
}
var sheep = prompt("How many sheeps do we have in the park?");
var rangers = prompt("How many rangers do we have in the park?");
feedPerRanger(sheep, rangers);
您应该将sheep
和rangers
变量传递给函数。
你还应该检查它们是否包含数字。考虑这一点:
function feedPerRanger(numSheep, numRangers){
alert("Each Park Ranger should load " + numSheep*2/numRangers + " lb(s) of feed into his/her BART today.");
}
feedPerRanger(sheep, rangers)
我可以按“h”或写任何我想写的东西。从MDN看
(提示的)结果是一个字符串,其中包含用户输入的文本,或null值
因此,如果变量不是一个数字,请添加一点检查,如下所示:
var sheep = prompt("How many sheeps do we have in the park?");
// sheep = "some random string";
// alert ( sheep / 2 );
我还可以在提示符中按取消,然后绵羊或游骑兵将为空
。如果您像这样更改函数,将不会有另一个NaN
:
isNaN(sheep)
你能创建一个小提琴吗?
feedPerRanger
函数的参数会影响外部变量(因为它们的名称相同)。由于调用函数时不带参数,因此两个参数都设置为undefined
。我只是将这两个变量传递给函数。为了使问题更加明显,请使参数名与变量名不同,并查看在计算中使用每个集合时会发生什么情况MDN上有一点关于这一点:很好的建议。我一定要检查以确保参数是数字。谢谢你的提示!请,如果你认为这是正确的答案,考虑接受它。