JS大神帮忙看一下这段代码问题出现在哪里?

发布网友 发布时间:32分钟前

我来回答

2个回答

热心网友 时间:4分钟前

var ysall = new Array("1", "2", "3");
var b = 0;
console.log(ysall.length);
setInterval(function(){
    a(ysall);
}, 1000);

function a(sz) {
    if (b < sz.length) {
        console.log('----');
        console.log(b);
        console.log(sz[b]);
    }
    b++;
    //你之前的错误是b作为函数的参数传入, 在函数内部, b是局部变量(作用范围仅限于a函数内部), 对b操作不会影响外面的b.
}

建议你在chrome浏览器中测试, 按F12打开控制台, 选择console这个视图, 刷新浏览器, 可以很好的展现这个过程. 使用console.log测试比alter直观.

热心网友 时间:8分钟前

var ysall=new Array("1","2","3")
//ysall是我自己的数组
var b = 0
alert(ysall.length)
setInterval("a(ysall)",1000)

//sz是数组的意思
function a(sz){
if (b<sz.length){
alert(b)
alert(sz[b]);
}
b++
}

setInterval那里,调用a方法时,因为b做为值传递而非引用传递,导致你在a方法内部没办法修改外部的b参数,按我那样修改,在a方法内部直接访问外部的b变量即可

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com