为什么这个简单的JavaScript程序不能工作?

为什么这个简单的JavaScript程序不能工作?,javascript,html,Javascript,Html,我试图从用户输入的数字数组中显示最小值、最大值和平均值 浏览器的控制台告诉我min和max不是函数 显示错误: 未捕获类型错误:max不是函数 在HTMLInputElement.onclick numbers.html:7 onclick@numbers.html:7 只有均值函数起作用,其他函数不起作用。。。为什么 var i; var num=新数组; window.alert输入10个数字:; 对于i=0;i

我试图从用户输入的数字数组中显示最小值、最大值和平均值

浏览器的控制台告诉我min和max不是函数 显示错误:

未捕获类型错误:max不是函数 在HTMLInputElement.onclick numbers.html:7 onclick@numbers.html:7

只有均值函数起作用,其他函数不起作用。。。为什么

var i; var num=新数组; window.alert输入10个数字:; 对于i=0;i<10;i++{ num[i]=parseIntpromptnum; } 函数最大值{ var max=num[0]; 对于i=0;i<10;i++{ 如果maxnum[i]{ min=num[i]; } } window.alertmin为:+min; } 函数均值{ var均值=0; 对于i=0;i<10;i++{ 平均值+=num[i]; } 平均值=平均值/10; window.alertmean:+mean; } 数字
尝试以不同的方式调用函数,例如,可以改为调用max函数max,并确保在html onclick处理程序中将其更改为max。当您使用var声明变量时,它是全局声明的,这是您应该避免这样做并使用let和const的一个很好的理由。 您的代码应该如下所示:

var i;
var num = new Array();
window.alert('enter 10 numbers:');
for (i = 0; i < 10; i++) {
    num[i] = parseInt(prompt('num'));
}
var max;
var min;
function maximum() {
    max = num[0];
    for (i = 0; i < 10; i++) {
        if (max < num[i]) {
            max = num[i];
        }
    }
    window.alert('the max is: ' + max);
}

function minimum() {
    min = num[0];
    for (i = 0; i < 10; i++) {
        if (min > num[i]) {
            min = num[i];
        }
    }
    window.alert('the min is: ' + min);
}

function mean() {
    var m = (max + min) / 2;
    window.alert('mean : ' + m);
}
您的html:

 <input type="button" value="max" onclick="maximum()"><br>
 <input type="button" value="min" onclick="minimum()"><br>
 <input type="button" value="mean" onclick="mean()"><br>

尝试以不同的方式调用函数,例如,可以改为调用max函数max,并确保在html onclick处理程序中将其更改为max。当您使用var声明变量时,它是全局声明的,这是您应该避免这样做并使用let和const的一个很好的理由。 您的代码应该如下所示:

var i;
var num = new Array();
window.alert('enter 10 numbers:');
for (i = 0; i < 10; i++) {
    num[i] = parseInt(prompt('num'));
}
var max;
var min;
function maximum() {
    max = num[0];
    for (i = 0; i < 10; i++) {
        if (max < num[i]) {
            max = num[i];
        }
    }
    window.alert('the max is: ' + max);
}

function minimum() {
    min = num[0];
    for (i = 0; i < 10; i++) {
        if (min > num[i]) {
            min = num[i];
        }
    }
    window.alert('the min is: ' + min);
}

function mean() {
    var m = (max + min) / 2;
    window.alert('mean : ' + m);
}
您的html:

 <input type="button" value="max" onclick="maximum()"><br>
 <input type="button" value="min" onclick="minimum()"><br>
 <input type="button" value="mean" onclick="mean()"><br>

Min和max是保留名称将函数名称更改为_Min _max

Min和max是保留名称将函数名称更改为_Min _max

重复。像onclick这样的内联事件处理程序是。它们是记录事件的一种方式。总是这样。这就是.min和max分别引用字符串和的原因之一。这不是您问题的答案,但值得一提的是,无论您在哪里使用var,都应该使用let。我会让你从兔子洞里找出原因。@SebastianSimon谢谢你的解释,但同时也有点困惑。。。它将max等函数视为输入的属性。“刹车不意味着什么吗?”莱昂纳多。这很令人困惑,因为您使用的是传统的DOM 0事件,而不是现代的事件侦听器。括号试图将值作为函数调用;它们不会将值转换为函数,也不会“选择”名为“max”或“min”的函数 — 最小值和最大值不引用的onclick.Duplicate中的任何函数。像onclick这样的内联事件处理程序是。它们是记录事件的一种方式。总是这样。这就是.min和max分别引用字符串和的原因之一。这不是您问题的答案,但值得一提的是,无论您在哪里使用var,都应该使用let。我会让你从兔子洞里找出原因。@SebastianSimon谢谢你的解释,但同时也有点困惑。。。它将max等函数视为输入的属性。“刹车不意味着什么吗?”莱昂纳多。这很令人困惑,因为您使用的是传统的DOM 0事件,而不是现代的事件侦听器。括号试图将值作为函数调用;它们不会将值转换为函数,也不会“选择”名为“max”或“min”的函数 — 最小值和最大值不引用onclick中的任何函数。