为了账号安全,请及时绑定邮箱和手机立即绑定

无法从 for ((i = 0; i < koniec.length; i++)

无法从 for ((i = 0; i < koniec.length; i++)

陪伴而非守候 2021-12-12 10:46:00
在我的 JS 脚本中,我试图通过 silnia() 索引一个返回数组的函数,我可以手动执行该操作而没有问题:silnia(5)[1] 但是当我尝试使用i来自 for 循环的不起作用。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;    }
查看完整描述

3 回答

?
守着一只汪

TA贡献1872条经验 获得超4个赞

您没有使用var,let或const语句来声明i,因此它被视为全局变量。


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


试试这个:


function silnia(n) {

    var wynikSilni = [];


    for (var i = 1; i < (n + 1); i++) {

        wynikSilni.push(i);

    }

    return wynikSilni;

}

koniec = [1, 2, 3];


for (var i = 0; i < koniec.length; i++) {

    // Returns only undefined:

    console.log(silnia(5)[i]);


    // Works no problem:

    // console.log(silnia(5)[2]);

}


查看完整回答
反对 回复 2021-12-12
?
ibeautiful

TA贡献1993条经验 获得超6个赞

现在是 2019 年,Arrays 有很多有用的方法可以消除设置和管理循环计数器的需要,正如其他人指出的那样,这是您问题的根源。


Array.forEach() 是其中最简单的,将有助于大大简化您的问题:


koniec = [1,2,3];


// Loop over the knoiec array

// .forEach requires a callback function to execute

// upon each loop iteration. That function will automatically

// be passed 3 arguments: the array item, the item index, the array

koniec.forEach(function(item, index){

    console.log(silnia(5)[index]);

});



function silnia(n){

    var wynikSilni = [];


    for(i = 1; i < (n + 1); i++){

        wynikSilni.push(i);

    }


    return wynikSilni;    

}


查看完整回答
反对 回复 2021-12-12
?
慕盖茨4494581

TA贡献1850条经验 获得超11个赞

您需要声明变量,否则所有函数都使用全局变量。


function silnia(n) {

    var wynikSilni = [];

    for (var i = 1; i < (n + 1); i++) { // use var or let

        wynikSilni.push(i);

    }

    return wynikSilni;

}


var koniec = [1, 2, 3];


for (var i = 0; i < koniec.length; i++) { // use var or let

    console.log(silnia(5)[i]);

}


查看完整回答
反对 回复 2021-12-12
  • 3 回答
  • 0 关注
  • 237 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号