js参数传递错误

var a = [1, 3, 4];

function yourTurn(i) {
    var b = prompt();
    
    alert("i===="+i);//实际结果i没有递增
    
    check(i);
    
    function check(i) {
        if(i == a.length){
            alert("都正确");
            return;
        }                
        if (b == a[i]) {
            alert("正确");            
            yourTurn(i++); //传递了新的参数,下一个运行的应该为yourTurn(1)
        }else{
            alert("错误");
        }
    };
    
}

yourTurn(0);

怎样才能正确运行,不断检查输入的值是否和给出的数组内容一致。

阅读 2.9k
2 个回答
yourTurn(i++); //传递了新的参数,下一个运行的应该为yourTurn(1)
// i++ 不如 ++i    i++是先返回值在自增 下一个运行的肯定不会为yourTurn(1),还是yourTurn(0)

此处不得不聊聊i++和++i的区别了。

表达式: a=i++; 
        b=++i;
i++ 等同于 a=i;a=i+1
++i 等同于 i=i+1;b=i

两者的区别是:前者(i++)是先赋值,然后再自增;后者(++i)是先自增,后赋值。

clipboard.png

如图所示便可明显知道两者的区别

所以你的调用函数代码:yourTurn(i++);改为yourTurn(++i)即可。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题