我在查看lodash代码时,想到了一个我感兴趣的问题。
// slice.js
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
- 具体来说,我想知道为什么这段代码存在于这个部分。
((end - start) >>> 0)
据我所知,位运算符移动二进制数字的位置,但是我想知道为什么会有 0 次移动的情况。
>>>=
- 而
>>>=
这个运算符是我第一次见到。 有人知道它是什么意思吗?