Javascript Can';无法通过console.log(silnia(5)[i])从for((i=0;i<;konice.length;i+;+;)获取索引的i;

Javascript Can';无法通过console.log(silnia(5)[i])从for((i=0;i<;konice.length;i+;+;)获取索引的i;,javascript,jquery,Javascript,Jquery,在我的JS脚本中,我试图通过silnia()对一个返回数组的函数进行索引,我可以手动执行该操作而不会出现问题:silnia(5)[1],但当我尝试使用for循环中的I时,它不起作用 koniec = [1,2,3]; for (i = 0; i < koniec.length; i++){ // Returns only undefined: console.log(silnia(5)[i]); // Works no problem: // conso

在我的JS脚本中,我试图通过silnia()对一个返回数组的函数进行索引,我可以手动执行该操作而不会出现问题:silnia(5)[1],但当我尝试使用for循环中的
I
时,它不起作用

koniec = [1,2,3];

for (i = 0; i < koniec.length; i++){
    // Returns only undefined:
    console.log(silnia(5)[i]);

    // Works no problem:
    // console.log(silnia(5)[2]);
}


function silnia(n){
    var wynikSilni = [];

    for(i = 1; i < (n + 1); i++){
        wynikSilni.push(i);
    }

    return wynikSilni;    
}

koniec=[1,2,3];
对于(i=0;i
您需要声明变量,否则所有函数都使用全局变量

函数silnia(n){
var wynikSilni=[];
对于(var i=1;i<(n+1);i++){//使用var或let
wynikSilni.推(i);
}
返回wynikSilni;
}
var koniec=[1,2,3];
对于(var i=0;i}
您没有使用
var
let
const
语句来声明
i
,因此它被视为全局变量

这意味着在
silnia
函数中使用的
i
与在
for
循环中使用的i相同;本质上,它外部的循环运行一次,silnia将
i
增加到6,一旦它返回到全局范围内的
for
循环,它就会停止,因为
i>konice.length
(ETA:然后它尝试访问
sylnia(5)[6]
,因为
i
在该时间点等于6,这是未定义的)

试试这个:

函数silnia(n){
var wynikSilni=[];
对于(变量i=1;i<(n+1);i++){
wynikSilni.推(i);
}
返回wynikSilni;
}
koniec=[1,2,3];
对于(变量i=0;i
现在是2019年,不需要设置和管理循环计数器,正如其他人所指出的,这是问题的根源

是其中最简单的一种,有助于大大简化您的问题:

koniec=[1,2,3];
//knoiec阵列上的环路
//.forEach需要一个回调函数来执行
//在每次循环迭代时。该函数将自动
//将传递3个参数:数组项、项索引和数组
koniec.forEach(功能(项目、索引){
控制台日志(silnia(5)[索引]);
});
函数silnia(n){
var wynikSilni=[];
对于(i=1;i<(n+1);i++){
wynikSilni.推(i);
}
返回wynikSilni;

}
想想调用
silnia
i
会发生什么。完美的例子是为什么
var
不是可选的。在使用它之前,你需要像这样定义
i
让i=0
var i=0
。还有koniec,
让koniec=[1,2,3]