Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/404.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在1方法中增加一个变量值会触发另一个方法的for循环,欢迎任何建议_Javascript_Jquery - Fatal编程技术网

Javascript 在1方法中增加一个变量值会触发另一个方法的for循环,欢迎任何建议

Javascript 在1方法中增加一个变量值会触发另一个方法的for循环,欢迎任何建议,javascript,jquery,Javascript,Jquery,为了学习js对象,我正在构建一个小的随机序列比较器,目前我遇到了一个问题,如果我在completeMessage()中增加限制变量,它会自动在compareSequences()的for循环中运行,从而产生一个无限循环,有人能告诉我哪里可能出错吗 有关的2种方法: compareSequences: function() { var instance = this; var i = 0; for( i; i <= limit; i+

为了学习js对象,我正在构建一个小的随机序列比较器,目前我遇到了一个问题,如果我在completeMessage()中增加限制变量,它会自动在compareSequences()的for循环中运行,从而产生一个无限循环,有人能告诉我哪里可能出错吗

有关的2种方法:

compareSequences: function() {                
    var instance = this;
    var i = 0;

    for( i; i <= limit; i++ ) {
        console.log('Limit inside loop:', limit);

        if( stacks.randomSequence[i] != stacks.userSequence[i] ) {
            instance.errorMessage();
            return;
        }                 

        if( i === limit ) {
            instance.completeMessage();
        }

        console.log('Limit now', limit);
    }               
},

completeMessage: function() {
    var instance = this;
    alert('Well done you where right!');
    limit = 5; //currently set as test, changing to ++ results in infinite loop
    instance.selectors.startButton.removeAttr('disabled');
    overallScore++;
    instance.selectors.scoreCounter.html(overallScore);
},
compareSequences:function(){
var实例=这个;
var i=0;

对于(i;i您的
限制
变量默认在全局范围内定义(作为对象
窗口
的属性),在一个函数中更改它的值会在任何地方更改它

确保使用
var
将其定义为类的本地

您的问题是在循环期间修改上限,每次退出循环时上限都会增加1

在初始化循环时需要全局值,此时只需将其复制到局部变量即可:

compareSequences: function() {                
  var instance = this;
  var i = 0;
  var max = limit;
  for( i; i <= max; i++ ) {
      ...
  }
  ...
}

你到底想做什么?limit是一个全局变量,我假设你知道limit在完整函数中没有其他用途,但我不知道你想用limit++做什么……啊,是的。提到break让我明白了我想OP是想做什么,我想在调用completeMessage之后,我想break这可能就是我想要的。这太棒了,你能不能就我的代码提供一些其他的建议,让它变得更好?现在就只需要编码和学习
if( i === limit ) {
  instance.completeMessage();
  break;
}