功能游戏有问题。Javascript

功能游戏有问题。Javascript,javascript,function,Javascript,Function,我的任务是从一个函数中创建一个snap crackle游戏。我有几个问题。我能够从第1步和第2步得到我想要得到的,最后一步,我想创建一个提示,要求用户提供一个值,该值将在函数中用于传递游戏结果。最后的结果应该是,例如,如果有人在提示下输入数字12,它应该打印12作为最大值,字符串Snap,2,Snap,4,SnapCrackle,6,Snap,8,Snap,Crackle,Snap,12 但是,正如您所看到的,我的代码导致了一些问题。它显示了多个捕捉裂纹字符串,它显示了两个最大值,其中一个为空。

我的任务是从一个函数中创建一个snap crackle游戏。我有几个问题。我能够从第1步和第2步得到我想要得到的,最后一步,我想创建一个提示,要求用户提供一个值,该值将在函数中用于传递游戏结果。最后的结果应该是,例如,如果有人在提示下输入数字12,它应该打印12作为最大值,字符串Snap,2,Snap,4,SnapCrackle,6,Snap,8,Snap,Crackle,Snap,12

但是,正如您所看到的,我的代码导致了一些问题。它显示了多个捕捉裂纹字符串,它显示了两个最大值,其中一个为空。我不知道如何将maxValue变量更改为提示符中要求的最高数字变量。无法将最高的数字值作为maxValue绑定回函数中,而且代码似乎在读取两个不同的游戏,而不是一个。我将发布到目前为止的说明和我的代码,让事情变得易懂,并为这篇冗长的文章道歉,尽力解释这里发生的事情

第一步
编写一个名为snapCrackle的函数,该函数接受一个参数:maxValue。此函数应循环1到maxValue(包括),并生成具有以下条件的字符串:

  • 如果数字是奇数,请将“Snap”连接到字符串的末尾
  • 如果数字是5的倍数,则将“Crackle”连接到字符串的末尾
  • 如果一个数字既是奇数又是5的倍数,则将“SnapCrackle”连接到字符串的末尾
  • 如果数字既不是奇数也不是5的倍数,请将数字和“,”连接到字符串的末尾
第二步
编写一个名为render的函数,该函数接受两个参数:text和maxValue。 此函数应使用document.write()将游戏打印到页面

第三步
最后,创建一个提示,要求用户输入最大值。 将提示结果指定给变量highestNumber 然后调用snapCrackle(最高位数字),并将结果赋给变量result。 最后,调用render(result,highestNumber); 这将使您的游戏进入页面

让maxValue=12;
设newArray=[];
让我们“抓拍”;
让c=“爆裂”;
让x=“Snapcrackle”;
函数snapCrackle(){

对于(让i=1;i这看起来像是一个家庭作业,所以我只想指出在如何使用函数方面存在的错误。我不能100%确定函数中的逻辑是否正确,希望您能够自己解决这一部分

函数
snapCrackle
不接受参数,因此它总是使用第1行声明的
maxValue
,而从不使用您在提示符中输入的值

您还运行了两次函数,这两个调用都引用了相同的数组(在第2行声明)。因此,无论您在提示符中输入什么,它都会运行函数,就像
maxValue
是12一样,并运行两次

可以通过删除第1行和第2行上的声明来解决此问题。然后修改函数,使其如下所示:

function snapCrackle(maxValue) {
  const newArray = []
  for (let i = 1; i <= maxValue; i++) {
    if (i % 2 !== 0 && i % 5 === 0) {
      newArray.push(x);
    } else if (i % 2 !== 0) {
      newArray.push(s);
    } else if (i % 5 === 0) {
      newArray.push(c);
    } else {
      newArray.push(i);
    }
  }
  return newArray;
}
function render(text, maxValue) {
  document.write(`
 <h1>Snap Crackle!</h1>
 <h3>Max Value ${maxValue}</h3>
 <p>${text}</p>
 `);
}

let highestNumber = prompt("What is the highest number?");
snapCrackle(highestNumber);
let result = snapCrackle(highestNumber);
console.log(render(result, highestNumber));
函数snapCrackle(最大值){
常量newArray=[]

对于(让我=1;你好,科里,如果你能简化一下你在这里提出的问题,这将有助于提供有意义的反馈。另一方面,这是一个经典的“嘶嘶声”问题的类型,因此有其他资源可以帮助您将此概念作为一种普遍的偏好。非常感谢。这很有效!!我很感激,现在我明白我做错了什么。这帮助我更好地理解函数。没问题!很高兴我能帮上忙:)请再问一个问题,因为我们把变量移到text=,函数如何知道${text}引用了什么?它如何知道引用newArray,array?所以
${text}
是传递给
render
函数的参数。该值将是您传递的任何值。当调用
render(result,highestNumber))时
脚本末尾的
result
是从数组
snapCrackle
返回的结果。由于将该数组打印为HTML,因此它会自动转换为字符串
newArray
是从
snapCrackle
函数内部声明的,这就是它可用的原因。有意义!没有w、 谢谢你,丹!
function render(text, maxValue) {
  document.write(`
 <h1>Snap Crackle!</h1>
 <h3>Max Value ${maxValue}</h3>
 <p>${text}</p>
 `);
}

let highestNumber = prompt("What is the highest number?");
snapCrackle(highestNumber);
let result = snapCrackle(highestNumber);
console.log(render(result, highestNumber));