lodash 源码阅读 —— isLength

186 阅读1分钟
用途

检测一个值是否符合数组length属性的要求。

引用

本模块没有引用。

源码
/** Used as references for various `Number` constants. */
const MAX_SAFE_INTEGER = 9007199254740991

/**
 * Checks if `value` is a valid array-like length.
 *
 * **Note:** This method is loosely based on
 * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).
 *
 * @since 4.0.0
 * @category Lang
 * @param {*} value The value to check.
 * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.
 * @example
 *
 * isLength(3)
 * // => true
 *
 * isLength(Number.MIN_VALUE)
 * // => false
 *
 * isLength(Infinity)
 * // => false
 *
 * isLength('3')
 * // => false
 */
function isLength(value) {
  return typeof value == 'number' &&
    value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER
}

export default isLength
知识点
  1. 有三种数据类型具有length属性。
  • Array —— 数组的length属性代表了数组的长度。
  • Function —— 函数的length属性代表了形参的个数。
  • String —— 字符串的length属性代表了字符串的长度。
  1. value % 1 == 0 —— length属性要求是自然数(0和正整数)。

  2. 定义MAX_SAFE_INTEGER的作用是为了保证低位数字的精度,这个数值是JS能够保证精度的上边界值-1。