Should I use jQuery.each()?

前端 未结 5 1708
情歌与酒
情歌与酒 2020-12-05 04:45

I\'m doing very frequent iterations over arrays of objects and have been using jQuery.each(). However, I\'m having speed and memory issues and one of the most called methods

5条回答
  •  孤街浪徒
    2020-12-05 05:15

    The source code for jQuery's each is as follows (Thank you John Resig and MIT License):

    each: function( object, callback, args ) {
        var name, i = 0, length = object.length;
    
        if ( args ) {
            if ( length === undefined ) {
                for ( name in object )
                    if ( callback.apply( object[ name ], args ) === false )
                        break;
            } else
                for ( ; i < length; )
                    if ( callback.apply( object[ i++ ], args ) === false )
                        break;
    
        // A special, fast, case for the most common use of each
        } else {
            if ( length === undefined ) {
                for ( name in object )
                    if ( callback.call( object[ name ], name, object[ name ] ) === false )
                        break;
            } else
                for ( var value = object[0];
                    i < length && callback.call( value, i, value ) !== false; value = object[++i] ){}
        }
    
        return object;
    }
    

    As you can trace and see, in most cases it is using a basic for loop where the only overhead is really just the callback itself. Shouldn't make a difference in performance.

    EDIT: This is with the realization that selector overhead has already occurred and you are given a populated array object.

提交回复
热议问题