# isArrayLike
# Description
检查 value 是否是类数组。 如果一个值被认为是类数组,那么它不是一个函数,并且 value.length 是个整数,大于等于 0,小于或等于 Number.MAX_SAFE_INTEGER
# Params
value
# Return
Boolean
# Depend
import isLength from './isLength.js'
# Code
function isArrayLike(value) {
return value != null && typeof value !== 'function' && isLength(value.length)
}
# Analyze
- 判断 value != null ,同时也包含了 undefined
- 并且 value 的类型 不是 function
- value.length 可以通过 isLength 的校验
# Remark
- Function.length MDN (opens new window)
- Array 的 length 属性的值是一个 0 到 232 -1 (4294967295) 的整数,如果超过了这个值,会报
RangeError: 无效数组长度
---- Array.length MDN (opens new window)
# Example
isArrayLike([1, 2, 3]) // => true
isArrayLike(document.body.children) // => true
isArrayLike('abc') // => true
isArrayLike(Function) // => false