为什么修改缓冲区切片会修改原始切片



以下内容修改了Buffer的一部分。

在这样做时,它也修改了原始Buffer。如果我在Array上执行类似的操作,那么原始操作将保持不变。

那么这种行为是 Node.js Buffer 上具体实现 slice 方法的结果吗?

const fs = require('fs');
fs.readFile(__filename, (err, buffer) => {
  const tag = buffer.slice(-2, -1);
  tag[0] = 'B';
  console.log(buffer.toString());
});
 // TAG: A

文档说

返回一个新的 Buffer,该缓冲区引用与原始内存相同的内存,但按开始和结束索引偏移和裁剪。注意:修改新的缓冲区片将修改原始缓冲区中的内存,因为两个对象的分配内存重叠。

https://nodejs.org/api/buffer.html#buffer_buf_slice_start_end

最新更新