isArrayLike = function isArrayLike(val) {
  return val != null && (typeof val !== 'function' && typeof val.length === 'number');
}
Returns true if a value is array-like, otherwise false. Array-like means a
value is not null, undefined, or a function, and has a numeric `length`
property.

@name isArrayLike
@api private
@param {*} val
@return {boolean}