jQueryソースを見てるjQueryeach()はとてもきれいに書かれています


eachソース$('#img').each(callback); jqueryのeachメソッドはjqueryを呼び出す.fn.eachメソッド,$('img')はdom配列集合である.
	each: function( callback, args ) {
		return jQuery.each( this, callback, args ); // this      array
	}

参考になる書き方はいくつかあります.
1.配列と対象の違いは、配列にlengthがあり、対象がないに違いない、isFunctionで判断する.
2.argsは配列パラメータ、applyとcall区別呼び出し
3.callbackでfalseが返された場合、ループ操作を終了します.
4.objectはarrayと{}をサポートする
	each: function( object, callback, args ) {
		var name, i = 0,
			length = object.length,
			isObj = length === undefined || jQuery.isFunction( object );

		if ( args ) {
			if ( isObj ) {
				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 ( isObj ) {
				for ( name in object ) {
					if ( callback.call( object[ name ], name, object[ name ] ) === false ) {
						break;
					}
				}
			} else {
				for ( ; i < length; ) {
					if ( callback.call( object[ i ], i, object[ i++ ] ) === false ) {
						break;
					}
				}
			}
		}

		return object;
	}

簡単なeachプログラムとテストを自分で書きます.
var f = function(obj, callback){
  var name, i=0,
  length = obj.length;
  for(; i>" + i + "=" + a[i]);
  for(name in a[i])
    console.log(name + "=" + a[i][name])
})