JavaScript提示符不';不出现

JavaScript提示符不';不出现,javascript,html,Javascript,Html,我试图用javascript制作一个简单的数学练习程序。提示警报中会给出不同的值,并将答案与用户输入进行比较。代码如下: <html> <head> <title>Calculations</title> <script language = "javascript"> generate(); function generate() { { var calc = Math.floor(math.random() * 3 +

我试图用javascript制作一个简单的数学练习程序。提示警报中会给出不同的值,并将答案与用户输入进行比较。代码如下:

<html>
<head>
<title>Calculations</title>

<script language = "javascript">

generate();

function generate() {
{   
var calc = Math.floor(math.random() * 3 + 1);


if (calc == 1){
    calcSort == "+"
}else if(calc == 2){
    calcSort == "*";
} else if (calc == 3){
    calcSort == "/";
}

var num1 = Math.floor(Math.random() * 10 + 1);
var num2 = Math.floor(Math.random() * 10 + 1);

var answer;

if (calc == 1){
    answer = num1 + num2;
} else if (calc == 2){
    answer = num1 * num2;
} else if (calc == 3){
    answer = num1 / num2;
}

var userAnswer = prompt("What is " + num1 + calcSort + num2 + "?");

if (userAnswer == answer){
    alert("correct");
} else {
    alert("fail");
}


}

</script>

</head>
</html>

计算
生成();
函数生成(){
{   
var calc=数学地板(数学随机()*3+1);
如果(计算=1){
计算排序=“+”
}否则如果(计算=2){
calcSort==“*”;
}否则如果(计算=3){
calcSort==“/”;
}
var num1=数学地板(数学随机()*10+1);
var num2=Math.floor(Math.random()*10+1);
var回答;
如果(计算=1){
答案=num1+num2;
}否则如果(计算=2){
答案=num1*num2;
}否则如果(计算=3){
答案=num1/num2;
}
var userAnswer=prompt(“什么是“+num1+calcSort+num2+”?”);
if(userAnswer==answer){
警惕(“正确”);
}否则{
警报(“失败”);
}
}

没有出现提示,有什么问题吗?

generate()
的函数声明开头有一个额外的
{
,并且没有定义
数学
,因为您需要使用
数学
(区分大小写)来使用实用程序函数。

您有一个额外的
{
generate()
函数声明的开头,也没有定义
math
,因为您需要使用
math
(区分大小写)来使用实用程序函数。

几个问题:

  • 在函数的开头有一个额外的
    {
  • JS区分大小写,因此使用
    Math
    而不是
    Math
  • 您使用
    =
    而不是
    =
    尝试将值分配给
    calcSort
以下是一个工作版本:

请注意,您应该使用
var
声明所有变量,否则它们将是全局变量-目前您没有声明
calcSort

另外请注意,如果您检查浏览器的JS控制台是否存在错误,则可以发现上面的前两个问题。缺少的
{
将导致“输入意外结束”错误,而第二个将导致“ReferenceError:未定义数学”。(与
=
相对的
=
问题实际上不是语法错误,因此不会在控制台中报告。)

几个问题:

  • 在函数的开头有一个额外的
    {
  • JS区分大小写,因此使用
    Math
    而不是
    Math
  • 您使用
    =
    而不是
    =
    尝试将值分配给
    calcSort
以下是一个工作版本:

请注意,您应该使用
var
声明所有变量,否则它们将是全局变量-目前您没有声明
calcSort

另外请注意,如果您检查浏览器的JS控制台是否存在错误,则可以发现上面的前两个问题。缺少的
{
将导致“输入意外结束”错误,而第二个将导致“ReferenceError:未定义数学”。(与
=
相对的
=
事实上不是语法错误,因此不会在控制台中报告。)

关于Alex W答案的评论移动到此处:

除了Alex W的答案之外,您还尝试使用相等运算符(
=
)而不是赋值运算符(
=
)来赋值
calcSort
),并且您正在全局范围(bad)中定义
calcSort
。以下是一个有效的JSFIDLE:

另外,为了好玩,我想向您展示一下如何轻松地清理代码,使其更易于维护。对我来说,将
calc
与数字进行比较的多个代码块是一种代码气味。我将每个
calc
结果的所有逻辑隐藏到一个小助手对象数组中。然后您可以随机选择一个来自数组的操作。当您要添加另一个操作时,只需向
操作
数组中添加一项即可:

function generate() {

    var operations = [
        { symbol: '+', calc: function(a, b) { return a + b; }}, // 0
        { symbol: '*', calc: function(a, b) { return a * b; }}, // 1
        { symbol: '/', calc: function(a, b) { return a / b; }}  // 2
    ];

    var calc = Math.floor(Math.random() * operations.length + 1) - 1;
    var operation = operations[calc];

    var num1 = Math.floor(Math.random() * 10 + 1);
    var num2 = Math.floor(Math.random() * 10 + 1);

    var answer = operation.calc(num1, num2);

    var userAnswer = prompt("What is " + num1 + operation.symbol + num2 + "?");

    if (userAnswer == answer) {
        alert("correct");
    } else {
        alert("fail");
    }
}
下面是上述内容的演示:

对Alex W答案的评论移到这里:

除了Alex W的答案之外,您还尝试使用相等运算符(
=
)而不是赋值运算符(
=
)来赋值
calcSort
),并且您正在全局范围(bad)中定义
calcSort
。以下是一个有效的JSFIDLE:

另外,为了好玩,我想向您展示一下如何轻松地清理代码,使其更易于维护。对我来说,将
calc
与数字进行比较的多个代码块是一种代码气味。我将每个
calc
结果的所有逻辑隐藏到一个小助手对象数组中。然后您可以随机选择一个来自数组的操作。当您要添加另一个操作时,只需向
操作
数组中添加一项即可:

function generate() {

    var operations = [
        { symbol: '+', calc: function(a, b) { return a + b; }}, // 0
        { symbol: '*', calc: function(a, b) { return a * b; }}, // 1
        { symbol: '/', calc: function(a, b) { return a / b; }}  // 2
    ];

    var calc = Math.floor(Math.random() * operations.length + 1) - 1;
    var operation = operations[calc];

    var num1 = Math.floor(Math.random() * 10 + 1);
    var num2 = Math.floor(Math.random() * 10 + 1);

    var answer = operation.calc(num1, num2);

    var userAnswer = prompt("What is " + num1 + operation.symbol + num2 + "?");

    if (userAnswer == answer) {
        alert("correct");
    } else {
        alert("fail");
    }
}

这是上面的一个工作演示:

另外,您尝试使用相等运算符(
=
)而不是赋值运算符(
=
)来赋值
calcSort
),并且您正在全局范围内定义
calcSort
(错误)。这是一个有效的JSFIDLE:另外,您正在尝试使用相等运算符(
==
)而不是赋值运算符(
=
)来赋值
calcSort
),并且您正在全局范围(bad)中定义
calcSort
。这是一个有效的JSFIDLE: