Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/427.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 为什么此代码的计算结果为未定义?_Javascript_For Loop - Fatal编程技术网

Javascript 为什么此代码的计算结果为未定义?

Javascript 为什么此代码的计算结果为未定义?,javascript,for-loop,Javascript,For Loop,我试图打印包含两个变量的数组,但它始终登录为“未定义” 我做错了什么 var firstNum = 1 var secondNum = 2 var list = [] var i; function calculate(firstNum,secondNum) { for( var i = firstNum; i <= secondNum; i++){ list.push(i); } console.log(l

我试图打印包含两个变量的数组,但它始终登录为“未定义” 我做错了什么

var firstNum = 1
var secondNum = 2
var list = []
var i;
    function calculate(firstNum,secondNum) {
        for( var i = firstNum; i <= secondNum; i++){
            list.push(i);

        }
        console.log(list);
};
var firstNum=1
var secondNum=2
变量列表=[]
var i;
函数计算(firstNum,secondNum){

对于(var i=firstNum;i在定义后调用函数:

calculate(firstNum, secondNum); // works as calculate(1, 2);

然后它将在控制台中显示数组,根据您的注释和更新的问题,您正在从表单的内联事件处理程序调用函数:

onsubmit = "calculate()"
您没有向函数传递任何参数,这意味着在函数中,
firstNum
secondNum
都是
未定义的
。我认为您将它们与同名的全局变量混淆了

如果更改函数声明以删除参数:

function calculate() {
…然后在函数中,当您引用
firstNum
secondNum
时,它将使用全局变量。(或者您可以更改参数名称,但由于您实际上没有在其中传递任何参数,因此删除它们更有意义。)

演示:

请注意,通常的做法是声明仅在该函数内部的函数中使用的变量:

   function calculate() {
       var firstNum = 1;
       var secondNum = 2;
       var list = [];
       for (var i = firstNum; i <= secondNum; i++) {
           list.push(i);
       }
       console.log(list);
   };
function calculate(firstNum, secondNum) {
    // your code here
}

calculate(1, 2);

实际调用
calculate()
的位置/方式?变量和函数声明的计算结果都是
未定义的
(并且无论如何不能用作右值)Dagg:你的评论与这个问题有什么关系?OP试图记录
列表
而不是变量声明或函数定义。他也不尝试将它们用作右值。你调用的函数没有参数。@FelixKling,他问为什么代码的计算结果为未定义;原因是没有stateme代码中的nt求值为任何值。如果它包含一个求值为某个值的语句,则整个程序将求值为上一个语句求值为的任何值。我认为您是对的,但调用可能应该是
calculate(firstNum,secondNum)
使用全局变量。或者可以完全省略函数声明中的形式参数,以便直接使用全局变量。哦,而且调用只需要在变量声明之后,也可以在函数声明之前。
function calculate(firstNum, secondNum) {
    // your code here
}

calculate(1, 2);