Почему функция loda sh cloneBuffer использует buffer.slice, когда флаг isDeep имеет значение true? - PullRequest
1 голос
/ 06 апреля 2020

Вот загрузка sh исходный код :

function cloneBuffer(buffer, isDeep) {
  if (isDeep) {
    return buffer.slice()
  }
  const length = buffer.length
  const result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length)

  buffer.copy(result)
  return result
}

Как мы видим, если флаг isDeep равен truecloneBuffer, используйте функцию buffer.slice() для копирования в буфер.

Но в соответствии с документами среза Node.js:

Возвращает новый буфер, который ссылается на ту же память, что и оригинал

https://nodejs.org/docs/latest-v13.x/api/buffer.html#buffer_buf_slice_start_end

И Buffers and TypedArrays документы:

Пока TypedArray # slice () создает копию части TypedArray, Buffer # slice () создает представление над существующим буфером без копирования.

https://nodejs.org/docs/latest-v13.x/api/buffer.html#buffer_buffers_and_typedarrays

Как говорится, Buffer.slice просто создает просмотр существующего буфера и без копирования .

, так почему loda sh использует его для выполнения операции cloneDeep?

...