Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/365.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 具有定义函数的简单JS_Javascript_Function_Arguments_Semantics - Fatal编程技术网

Javascript 具有定义函数的简单JS

Javascript 具有定义函数的简单JS,javascript,function,arguments,semantics,Javascript,Function,Arguments,Semantics,我正在创建一个简单的问题,并使用网站提示,但我遇到了一些问题 我在这个脚本中遇到了两个错误,第一个错误是“问题未定义” 第二个“失踪)后的论点清单”上的行与我的第一次提示有什么想法 <script> var a = Math.floor((Math.random()*10)+1); var b = Math.floor((Math.random()*10)+1); var c = Math.floor((Math.random()*10)+1); var wrong = 0; f

我正在创建一个简单的问题,并使用网站提示,但我遇到了一些问题

我在这个脚本中遇到了两个错误,第一个错误是“问题未定义”

第二个“失踪)后的论点清单”上的行与我的第一次提示有什么想法

<script>
var a = Math.floor((Math.random()*10)+1);
var b = Math.floor((Math.random()*10)+1);
var c = Math.floor((Math.random()*10)+1);

var wrong = 0;

function question()
{   
    for(x=1; x>10; x++)
    {
        prompt("Does" b"+"c " = ");
        if(prompt.input == b + c)
        {
            question();
        }else{
            wrong++;
        }

        if(x==10)
        {
            alert("well you were wrong " + wrong" times");
        }
    }
}
</script>

var a=数学地板((数学随机()*10)+1);
var b=数学地板((数学随机()*10)+1);
var c=数学地板((数学随机()*10)+1);
var=0;
函数问题()
{   
对于(x=1;x>10;x++)
{
提示(“做“b”+“c”=”);
如果(prompt.input==b+c)
{
问题();
}否则{
错误++;
}
如果(x==10)
{
警惕(“嗯,你错了”+错了次数”);
}
}
}
警报
不返回值

缺少字符串连接:

"Does" b"+"c " = "
"Does"+ b + "+" + c + " = "
(我建议检查所有字符串)

此外,使用包含循环的递归,您将生成一个无限循环: (略为简化)


您正在调用
question()10次,每次调用
问题()

问题未定义
表示您的函数
问题
在浏览器实际读取之前被调用

确保仅在触发window.ready事件后才执行主JS代码

window.onready = function(){
    //Here your starting code goes
}

您缺少到的参数中的所有
+

prompt("Does" b"+"c " = ");
必须使用
+
连接字符串:

prompt("Does " + b + "+" + c + " = ");
以下文件中缺少相同的
+

alert("well you were wrong " + wrong" times");
使用:


此外,您正在从内部调用
问题
。这不会导致语法错误,但在您的案例中几乎不需要



而且,
prompt.input
不起作用。它总是未定义的。使用提示调用的返回值:

var response = prompt( ... );
if(response == b+c){
  ...


此外,您只需初始化随机变量一次。也许您希望在每个循环中都有一个新的对(除非递归就是为了这个目的)。感谢@Asad的注意。

您似乎在几个地方跳过了连接运算符。正确的版本如下所示:

prompt("Does " + b + "+" + c + " = ");
再次在此:

alert("well you were wrong " + wrong + " times");
此外:

  • 您的随机数需要在开始时再次随机 环路
  • 问题
    不需要递归(您已经在使用循环)
  • 关于用户错误次数的警报需要在循环之外发生
  • 以下是更正的版本:

    var a = Math.floor((Math.random()*10)+1);
    var b = Math.floor((Math.random()*10)+1);
    var c = Math.floor((Math.random()*10)+1);
    
    var wrong = 0;
    
    function question()
    {   
        for(x=1; x>10; x++)
        {
            b = Math.floor((Math.random()*10)+1);
            c = Math.floor((Math.random()*10)+1);
            prompt("Does " + b + "+" + c + " = ");
            if(prompt.input != b + c)
                wrong++;        
        }
    
        alert("well you were wrong " + wrong + " times");
    }
    

    首先,串接中存在错误。应该是

    prompt("Does" +b+c+" = ");
    alert("well you were wrong " + wrong+" times");
    

    其次,您反复使用函数
    question()如果没有创建循环的值升级

    您似乎跳过了多个位置的串联运算符从开始。您现在可以取消勾选所有警告,您将获得大量的反馈,其中只有错误。此外,
    提示。输入
    ?你是怎么得到这个密码的?只是你最好的猜测?没什么好等的。这个问题是从内部被调用的,所以当它被调用时,它已经被定义了。@JanDvorak是的,第一次调用它的是什么?很高兴知道。不过,您不需要等待页面加载。@JanDvorak如果您试图在构建DOM之前使用jQuery更改DOM,那么不等待页面加载将成功地使IE 9之前崩溃completely@JanDvorak等待资源加载是一种很好的做法。load仅表示已接收并预处理所有文本文件。所有图像仍在加载,JS代码同时工作。在这种情况下,预测可能发生的事情要容易得多。打得好,我错过了;)对于可能阅读本文的其他用户来说,它仍然是有效的反馈。这不是否决投票的理由。我想引起一个循环10times@Asad已经写了很多应该怎么做。我可以写我自己的,但基本上是一样的。我试图引起循环10次,但每次都会因为随机数而不同。
    alert("well you were wrong " + wrong + " times");
    
    var a = Math.floor((Math.random()*10)+1);
    var b = Math.floor((Math.random()*10)+1);
    var c = Math.floor((Math.random()*10)+1);
    
    var wrong = 0;
    
    function question()
    {   
        for(x=1; x>10; x++)
        {
            b = Math.floor((Math.random()*10)+1);
            c = Math.floor((Math.random()*10)+1);
            prompt("Does " + b + "+" + c + " = ");
            if(prompt.input != b + c)
                wrong++;        
        }
    
        alert("well you were wrong " + wrong + " times");
    }
    
    prompt("Does" +b+c+" = ");
    alert("well you were wrong " + wrong+" times");