function isIterableLike( value ) {
	var f;
	if ( isPrimitive( value ) ) {
		return false;
	}
	f = value[ ITERATOR ];
	return (
		isFunction( f ) &&
		f.length === 0 &&
		isIteratorLike( value[ ITERATOR ]() ) // Why this form? In order to preserve `this`.
	);
}
Tests if a value is iterable-like.

@param {*} value - value to test
@returns {boolean} boolean indicating whether a value is iterable-like

@example
var bool = isIterableLike( [] );
// returns <boolean>

@example
var bool = isIterableLike( {} );
// returns false

@example
var bool = isIterableLike( null );
// returns false