lodash源码分析之baseSlice()函数
源码 function baseSlice ( array , start , end ) { var index = - 1 , length = array . length ; if ( start < 0 ) { // 传入的参数转换 start = - start > length ? 0 : ( length + start ) ; } end = end > length ? length : end ; // 这里判断之后,end依然有可能为负数 if ( end < 0 ) { // 传入的参数转换 end += length ; } // 先对start和end单独做判断,然后,二者在比较 length = start > end ? 0 : ( ( end - start ) >>> 0 ) ; // 按位操作符操作数字的二进制形式,但是返回值依然是标准的JavaScript数值。 start >>>= 0 ; var result = new Array ( length ) ; while ( ++ index < length ) { result [ index ] = array [ index + start ] ; } return result ; } 我的代码 // 数组的slice方法重写 function mySlice ( arr ,