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);