我有以下几次使用的循环:
for(var i = 0; i < $options.length; i++) { //...
每次我想使用该循环时,我都不想重复使用该代码,而是将其转换为函数。
我尝试过以下操作,但收到错误“我未定义”
function optionLoop( $options, callback) {
for(var i = 0; i < $options.length; i++) {
callback();
}
}
用法:
optionLoop($options, function(){
// Do it
});
但这不起作用。如何将循环转换为可重用的函数,我可以将其传递给另一个函数?还有一个问题......我是不是因为想要这样做而疯狂?
谢谢!
答案 0 :(得分:6)
您应该将循环值传递给回调:
function optionLoop( $options, callback) {
for(var i = 0; i < $options.length; i++) {
callback(i, $options[i]);
}
}
然后,当你调用它时,在你的回调函数中使用它们:
optionLoop($options, function(index, value) {
});
这是小提琴:http://jsfiddle.net/vGHK5/
更新:如果您希望能够从函数中突破循环,请使用:
function optionLoop( $options, callback) {
for(var i = 0; i < $options.length; i++) {
if ( callback(i, $options[i]) === false ) break;
}
}
如果你想要休息,那么只需返回false
。
答案 1 :(得分:2)
您是否尝试在回调中访问i
?您可能希望将其传递给callback