Javascript-为什么我的函数出现错误 var sheep=prompt(“公园里有多少只绵羊?”); var rangers=prompt(“公园里有多少流浪者?”); 功能饲养员(绵羊、护林员){ 警报(“每个公园管理员应加载”+绵羊*2/管理员+ “今天给他/她的BART喂了1磅(s)”; } feedPerRanger();

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

你好

我还是个初学者,所以这可能是新手犯的错误。该脚本将提醒用户每个公园管理员将向其BART加载多少饲料。假设每只羊2磅除以护林员的数量。我不断得到以下错误。有人能解释为什么吗

“每个公园护林员今天都应该将一磅(s)的饲料装入其BART。”

更改此项:

<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上有一点关于这一点:很好的建议。我一定要检查以确保参数是数字。谢谢你的提示!请,如果你认为这是正确的答案,考虑接受它。