将循环定义为要重用的函数

时间:2012-08-27 01:11:40

标签: javascript function loops

我有以下几次使用的循环:

    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
    });

但这不起作用。如何将循环转换为可重用的函数,我可以将其传递给另一个函数?还有一个问题......我是不是因为想要这样做而疯狂?

谢谢!

2 个答案:

答案 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

这是小提琴:http://jsfiddle.net/vGHK5/1/

答案 1 :(得分:2)

您是否尝试在回调中访问i?您可能希望将其传递给callback