Javascript Can';无法通过console.log(silnia(5)[i])从for((i=0;i<;konice.length;i+;+;)获取索引的i;
在我的JS脚本中,我试图通过silnia()对一个返回数组的函数进行索引,我可以手动执行该操作而不会出现问题:silnia(5)[1],但当我尝试使用for循环中的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
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]