Javascript 当isDeep标志为true时,为什么lodash cloneBuffer函数使用buffer.slice?
这里是loadsh:Javascript 当isDeep标志为true时,为什么lodash cloneBuffer函数使用buffer.slice?,javascript,node.js,frontend,lodash,Javascript,Node.js,Frontend,Lodash,这里是loadsh: 函数cloneBuffer(缓冲区,isDeep){ if(isDeep){ 返回buffer.slice() } 常量长度=buffer.length const result=allocUnsafe?allocUnsafe(长度):新的buffer.constructor(长度) buffer.copy(结果) 返回结果 } 如我们所见,如果isDeep标志为true,cloneBuffer函数使用buffer.slice()复制缓冲区 但是根据Node.js切片的文
函数cloneBuffer(缓冲区,isDeep){
if(isDeep){
返回buffer.slice()
}
常量长度=buffer.length
const result=allocUnsafe?allocUnsafe(长度):新的buffer.constructor(长度)
buffer.copy(结果)
返回结果
}
如我们所见,如果isDeep
标志为true
,cloneBuffer
函数使用buffer.slice()
复制缓冲区
但是根据Node.js切片的文档:
返回引用与原始缓冲区相同内存的新缓冲区
和缓冲区和类型缓存
文档:
当TypedArray#slice()创建TypedArray部分的副本时,Buffer#slice()在现有缓冲区上创建一个视图而不进行复制
这清楚地表明,Buffer.slice
只在现有缓冲区上创建一个视图,而不复制
那么为什么lodash使用它来执行cloneDeep操作呢