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