您的位置:首页技术文章
文章详情页

javascript - lodash源码, slice方法中为何使用==的疑问

浏览:97日期:2023-04-02 10:30:17

问题描述

之前一直认为代码中使用==会让使用或阅读代码者考虑隐式转换,增加使用负担(基本没有好处?),那么lodash的slice方法是出于什么考虑使用==的呢?下面是源码

/** * Creates a slice of `array` from `start` up to, but not including, `end`. * * **Note:** This method is used instead of * [`Array#slice`](https://mdn.io/Array/slice) to ensure dense arrays are * returned. * * @since 3.0.0 * @category Array * @param {Array} array The array to slice. * @param {number} [start=0] The start position. * @param {number} [end=array.length] The end position. * @returns {Array} Returns the slice of `array`. */function slice(array, start, end) { let length = array == null ? 0 : array.length if (!length) { return [] } start = start == null ? 0 : start end = end === undefined ? length : end if (start < 0) { start = -start > length ? 0 : (length + start) } end = end > length ? length : end if (end < 0) { end += length } length = start > end ? 0 : ((end - start) >>> 0) start >>>= 0 let index = -1 const result = new Array(length) while (++index < length) { result[index] = array[index + start] } return result}export default slice

问题解答

回答1:

foo == null 是 == 运算符比较特殊的一种用法,实际上等价于 foo === null || foo === undefined,可以算是一种简写形式,这是由 == 运算符的运算规则决定的:

javascript - lodash源码, slice方法中为何使用==的疑问

标签: JavaScript