jquery.each()源码

function each ( obj, callback, args ) {
		var value,
			i = 0,
			length = obj.length,
			isArray = isArraylike( obj );

		if ( args ) {
			if ( isArray ) {
				for ( ; i < length; i++ ) {
					value = callback.apply( obj[ i ], args );

					if ( value === false ) {
						break; //这样写可以在指定位置调出循环
					}
				}
			} else {
				for ( i in obj ) {
					value = callback.apply( obj[ i ], args );

					if ( value === false ) {
						break;
					}
				}
			}

		// A special, fast, case for the most common use of each
		} else {
			if ( isArray ) {
				for ( ; i < length; i++ ) {
					value = callback.call( obj[ i ], i, obj[ i ] );

					if ( value === false ) {
						break;
					}
				}
			} else {
				for ( i in obj ) {
					value = callback.call( obj[ i ], i, obj[ i ] );

					if ( value === false ) {
						break;
					}
				}
			}
		}

		return obj;
	},
            var arr = [
				{
					name: "111", age: 26
				},
				{
					name: "222", age: 7
				},
				{
					name: "333", age: 99
				},
				{
					name: "444", age: 54
				}
			];

			$.each(arr, function(i, value) {
				if(value.age == 99) {
					return false
				}
			});

如上面这种情况,那么循环到age = 99那一项的时候,回调的结果为false,那么源码的value是回调的结果为false,则循环到当前项的时候,循环会到此结束,不会再继续往下循环。

猜你喜欢

转载自blog.csdn.net/rose999ying/article/details/86492744