我有一个Prototype类 - 在类中我调用一个函数,在这个函数中我做enumerable.each迭代。如果此迭代中的元素未通过检查,则调用另一个函数,然后稍后重新调用此相同的函数。我可以在这个迭代中破解,这样不仅迭代结束,而且函数内没有任何其他东西被调用。
说这个代码我不希望在elm.something == 'whatever
'时调用console.log。显然我可以设置一个变量,然后在函数后检查这个,但是还有其他我应该做的事情吗?
myFunction: function(el){
el.each(function(elm){
if(elm.something == 'whatever'){
this.someOtherFunction(elm);
}
},this);
console.log("i dont want this called if elm.something == 'whatever'");
}
为了清楚起见,在这种情况下,console.log
只是占位符代码,用于在此循环之后执行的一些额外逻辑的开头
答案 0 :(得分:2)
最简单的方法是避免使用each(),而是使用for循环重写:
myFunction: function(el){
for(var i in el) {
var elm = el[i];
if(elm.something == 'whatever'){
return this.someOtherFunction(elm);
}
}
console.log("i dont want this called if elm.something == 'whatever'");
}
答案 1 :(得分:2)
你自己回答了 “显然我可以设置一个变量,然后在函数”
之后检查它在这种情况下,你基本上不打算调用console.log,即使elm.something =='what'对于单个'elm'
myFunction: function(el){
var logIt = true;
el.each(function(elm){
if(elm.something == 'whatever'){
logIt = false;
this.someOtherFunction(elm);
}
},this);
logIt && console.log("i dont want this called if elm.something == 'whatever'");
}